我已经读过,提交隔离可以提供比可序列化隔离级别更多的并发性。
我的问题是 Read committed isolation如何提供比序列化更多的并发性?。一个简短的场景将是一个很好的帮助
问题: - 说两个交易tran1和tran2开始(当我说交易开始时,这里意味着交易在他们在时间t1发出一些查询对吗?时开始)。如果tran1在时间t2更新row1并且稍后在时间t3更新tran2则获取相同的行,它不会通过tran1完成更新的行。对吗?我说这是因为tran1和tran2将是当前的结果在时间t1出现的数据状态。正确吗?事务在开始时是否会获取完整数据库的快照?
我已经读过,编码可序列化事务需要应用程序开发人员进行额外的工作,以检查“无法序列化访问”错误并撤消并重试事务。 不确定开发人员何时会收到“无法序列化访问”错误?我们是否会在以下情况中得到相同的错误
假设两个交易tran1和tran2在时间t1开始。如果tran1在时间t2更新row1并提交,则在时间t3更新tran2并更新并提交相同的row1。在这种情况下,它会抛出“无法序列化访问”错误吗? 如果是,oracle是否在内部维护版本以防止可序列化的事务,以便知道用户已更新行?