浅谈三层封锁协议
一层封锁协议:
事务T在修改数据R之前必须 先对其加X锁,直到事务结束才释放X锁,注意是事务结束。可以防止丢失修改。最常见的就是售票问题。
二层封锁协议:
在一层协议的基础上增加了事务T在读取数据R时要增加S锁,直到读取结束之后才释放S锁。可以防止读脏数据。
三层封锁协议:
在二层协议的基础上增加了事务T在读取数据R时要增加S锁,直到事务结束才释放S锁。可以防止不可重复读。
这个时候我就有疑问了,一层协议已经增加了X锁,按道理说加了锁之后就其它事务就不能再访问了这个数据了,这样的话不就可以防止读脏数据了吗?
事实上不是的,在我搜索了一下之后发现:如果你不加锁,那么默认的你还是可以读这个数据的。下面是截图。