封锁协议

作者: 柳蒿 | 来源:发表于2019-10-17 10:14 被阅读0次

    MySQL的锁系统:shared lock和exclusive lock(共享锁和排他锁,也叫读锁和写锁,即read lock和write lock
    X锁:共享锁
    S锁:排他锁

    一级封锁协议

    一级封锁协议是:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。
    一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。使用一级封锁协议可以解决丢失修改问题。 
    在一级封锁协议中,如果仅仅是读数据不对其进行修改,是不需要加锁的,它不能保证可重复读和不读“脏”数据。

    二级封锁协议

    二级封锁协议是:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后方可释放S锁。
    二级封锁协议除防止了丢失修改,还可以进一步防止读“脏”数据。但在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。

    三级封锁协议

    三级封锁协议是:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
    三级封锁协议除防止了丢失修改和不读“脏”数据外,还进一步防止了不可重复读。

    相关文章

      网友评论

        本文标题:封锁协议

        本文链接:https://www.haomeiwen.com/subject/pkojmctx.html