事务可序列化隔离级别说明

时间:2011-02-17 07:14:50

标签: sql transactions relational-database

我是对的吗?

Serializable中的事务IsolationLevel为select语句设置读锁定。选择某个范围有两个事务。两者都获得读锁。但随后第一次事务更新或在所选范围内添加新值并提交。第二次交易会发生什么?如果在第一个事务提交后尝试更新或在选定范围内添加值,它会失败吗?

2 个答案:

答案 0 :(得分:2)

你没有说RDBMS所以我假设一个带有SX锁的简单锁定方案。你说。

  

Serializable中的交易   IsolationLevel为其设置读锁定   选择陈述。那里有两个   选择某个范围的交易。   两者都获得读锁。

     

但首先是交易更新或   在所选内容中添加新值   范围和承诺。

如果第二个事务已经对范围进行了读锁定,则无法执行此操作。它必须等到第二个事务发布锁定。如果第二个事务也试图更新范围,那么将导致死锁。

答案 1 :(得分:0)

是的,第二个事务将失败,因为第二个事务只会看到在事务开始之前提交的数据。