美文网首页
数据库三级封锁协议

数据库三级封锁协议

作者: 今天不想掉头发 | 来源:发表于2019-08-06 22:32 被阅读0次

转自:
https://baike.baidu.com/item/%E4%B8%89%E7%BA%A7%E5%8A%A0%E9%94%81%E5%8D%8F%E8%AE%AE/1148391?fr=aladdin
https://cloud.tencent.com/developer/article/1138677

数据库分三级封锁协议:

  1. 一级封锁协议:事务T在修改数据A之前必须对其先加X锁,直到事务结束(COMMIT和ROLLBACK)才释放。
    一级封锁协议解决丢失修改的问题。


    image.png

    如上图所示,倘若事务T1没有对R加X锁,则可能会被T2的修改覆盖。使用一级封锁协议后如下所示,避免了丢失T1的更新


    image.png
  2. 二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后可释放S锁。
    二级封锁协议解决丢失修改和脏读的问题。


    image.png

    如下所示:


    image.png
  3. 三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。进一步解决了不可重复读的问题(个人感觉三级封锁协议是数据库里的规定,但是对于mysql来说,可以使用MVCC来解决不可重复读中的快照读,当前读依然是要加锁的)


    image.png

    如下所示:


    image.png

相关文章

  • 数据库三级封锁协议

    转自:https://baike.baidu.com/item/%E4%B8%89%E7%BA%A7%E5%8A%...

  • 三级封锁协议

    锁的类型:基本的封锁类型有两种:排它锁(X锁)和共享锁(S锁)X锁,是事务T对数据A加上X锁时,只允许事务T读取和...

  • 封锁协议

    MySQL的锁系统:shared lock和exclusive lock(共享锁和排他锁,也叫读锁和写锁,即rea...

  • 数据库设计基础知识(2)

    三级封锁协议 X锁是排它锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务都 不能再对A加任何类型...

  • 两段封锁、三级封锁、多粒度封锁

    引言现在数据库的实现已经很成熟了,基本已经能够满足我们日常的工作和学习所需,但是有的时候,人还是要“犯贱”一下嘛,...

  • 基础3 封锁协议

    在运用X锁和S锁对数据对象加锁时,还需要约定一些规则 ,例如何时申请X锁或S锁、持锁时间、何时释放等。称这些规则为...

  • 系统原理-封锁

    封锁的类型以及粒度,两段锁协议,隐式和显示锁定。 一、封锁粒度 MySQL 中提供了两种封锁粒度: 行级锁 表级锁...

  • ORACLE的锁机制 - blue - 博客园

    设立封锁机制主要是为了对并发操作进行控制,对干扰进行封锁,保证数据的一致性和准确性。Oracle数据库封锁方式有三...

  • 数据库封锁技术

    数据库通常允许多个用户共享数据信息资源,所以必须对并发的事务进行控制,防止多用户并发使用数据库时造成数据错误,以保...

  • 高性能mysql(1)-数据库概论

    数据库概论 数据库语言 数据库操纵语言:DML数据库定义语言:DDL数据库控制语言:DCL 数据库标准模式 三级模...

网友评论

      本文标题:数据库三级封锁协议

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