这些天我提高了我对事务隔离级别的了解。
特别是,我很难理解Read Committed和Repeatable Read之间的区别。
I've read this fantastic article,我理解所有关于脏读,不可重复读和幻像读的内容,但我不明白更新中多个事务会发生什么。
示例:
表:“测试”(字段:ID_REC - 数据)
交易A:
set transaction isolation level read committed;
begin transaction
update test
set DATA = 't1'
where ID_REC = 1
waitfor delay '00:00:20'
commit transaction
交易B :(相同但有另一条记录)
set transaction isolation level read committed;
begin transaction
update test
set DATA = 't2'
where ID_REC = 2
commit transaction
我在两秒钟内执行两笔交易。 第二个交易在第一个交易完成之前不会开始。 而且我也无法执行查询(从测试中选择*)。
所以:为什么会发生这种情况?事务在不同的行上工作......对于这种情况,Read Committed和Repeatable Read之间有什么区别?