并发事务,锁,事务隔离性
并发事务,锁,事务隔离性
并发事务可能引起的三个问题:
1,丢失更新
事务t1:R(A)5,W(A)6, ,R(A)7?
事务t2: W(A)7
2,读脏数据
事务t1:R(A)5,W(A)6, W(A)7
事务t2: R(A)6?
3,读值不可重复
事务t1:R(A)5, ,R(A)6?
事务t2: W(A)6
锁:
Select:共享锁。
Insert,Delete:独占锁。
Update:更新锁。
事务隔离性:
Read Uncommitted读未提交
这个是想怎么读就怎么读,会读到脏数据。
Read Commiteed读提交
直到其它事务提交数据,才开始度数据,不会读到脏数据,但会有丢失更新和读值不可重复的问题。sqlserver默认。
Read Repeatable可重复读
无论共享锁和独占锁,直到事务完成才释放。解决了读值不可重复的问题和丢失更新的问题。
并发事务可能引起的三个问题:
1,丢失更新
事务t1:R(A)5,W(A)6, ,R(A)7?
事务t2: W(A)7
2,读脏数据
事务t1:R(A)5,W(A)6, W(A)7
事务t2: R(A)6?
3,读值不可重复
事务t1:R(A)5, ,R(A)6?
事务t2: W(A)6
锁:
Select:共享锁。
Insert,Delete:独占锁。
Update:更新锁。
事务隔离性:
Read Uncommitted读未提交
这个是想怎么读就怎么读,会读到脏数据。
Read Commiteed读提交
直到其它事务提交数据,才开始度数据,不会读到脏数据,但会有丢失更新和读值不可重复的问题。sqlserver默认。
Read Repeatable可重复读
无论共享锁和独占锁,直到事务完成才释放。解决了读值不可重复的问题和丢失更新的问题。
合乎自然而生生不息。。。


浙公网安备 33010602011771号