浅谈三层封锁协议

一层封锁协议:

       事务T在修改数据R之前必须 先对其加X锁,直到事务结束才释放X锁,注意是事务结束。可以防止丢失修改。最常见的就是售票问题。

二层封锁协议:

      在一层协议的基础上增加了事务T在读取数据R时要增加S锁,直到读取结束之后才释放S锁。可以防止读脏数据。

三层封锁协议:

      在二层协议的基础上增加了事务T在读取数据R时要增加S锁,直到事务结束才释放S锁。可以防止不可重复读。

      这个时候我就有疑问了,一层协议已经增加了X锁,按道理说加了锁之后就其它事务就不能再访问了这个数据了,这样的话不就可以防止读脏数据了吗?

      事实上不是的,在我搜索了一下之后发现:如果你不加锁,那么默认的你还是可以读这个数据的。下面是截图。

     

 

posted @ 2018-04-18 22:21  泥土里的绽放  阅读(198)  评论(0)    收藏  举报