为什么不都用严格的第三级封锁协议?

封锁协议分一级、二级、三级
第三级封锁协议最为严格,为什么不都用第三级封锁协议呢?

一,二,三级协议分别解决了,丢失修改,读脏数据,和不可重复读问题。
数据库三级封锁协议
协议规则如下:
在读数据的时候,对于请求加S锁,直到事务结束,才释放S锁,而不是读完立即释放
首先,我们来看一下,“不可重复读”的情况,我们假设T1事务的任务就是读2次数据,且隔5s,只是个假设,意思就是没有读完2次A就不算T1事务结束

img


这时候A两次读的数据不一致,出现了不可重复读的情况。
根据数据库三级封锁协议,协议的规则,修改如下

img

这就解决了不可重复读问题