码迷,mamicode.com
首页 > 其他好文 > 详细

三段锁协议

时间:2020-05-03 10:22:33      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:可重复   加锁   控制   对象   读取   好处   解决   必须   不可   

  由于并发,如果不加以控制,就会出现以下问题:丢失修改,不可重复读,幻读(读脏数据)。

  解决方法:

  1)一级封锁协议

  做法:修改对象之前必须加X锁,直到事务结束才能释放。

  好处:可防止丢失修改。

  2)二级封锁协议

  做法:在一级锁的基础上,读取数据之前必须先对其加 S 锁,读完后即可释放 S 锁。

  事务T1对C进行修改,加 X锁;事务T2想读C,加 S锁,这个时候因为已经有 X锁,无法加锁。直到 T1修改完后,释放 X锁,才可以加

  S锁。

  避免了读脏数据。

  3)三级封锁协议

   为了解决 不可重复读的问题。

  出现重复读的情况:事务 T1 对 A读数据之前,加 S锁,然后读完再释放。然后事务T2对A加 X锁,修改了A。事务T1并没有结束,然后

  为了验算,再次读,已经不能读到之前的数据了。

  在一级锁的基础上,读取数据之前必须先对其加 S 锁,直到事务结束才释放。

  

 

  

三段锁协议

标签:可重复   加锁   控制   对象   读取   好处   解决   必须   不可   

原文地址:https://www.cnblogs.com/juanzhi/p/12820772.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!