SQL语句总结----并发控制(持续更新)

SQL使用资源锁定的方式管理用户的并发操作:

  1. 乐观并发控制:假定用户之间不太可能发生资源冲突,允许用户在不锁定任何资源的情况下执行事务,只有当用户试图修改数据时才检查资源是否冲突,需要使用游标。
  2. 悲观并发控制:根据需要在事务的持续时间内锁定资源,从而确保事务的完整性和数据库的一致性(默认)

基本锁:

一般更新模式由一个事物组成,该事务先读取记录,获得资源的共享锁,然后修改记录,次操作要求锁转换为排它锁

  1. 共享锁(S锁 Share lock)
    用于只读数据操作,它允许多个并发事务对资源锁定进行读取,但禁止其他事务对锁定资源进行修改操作。
  2. 排他锁(X锁 eXclusive lock)
    它锁定的资源不能被其他并发事务再进行任何锁定,所以其他事务不能读取和修改锁定的资源用于自己数据的修改。


    image.png

三级封锁协议:

  1. 一级封锁协议
    事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放,结束包括正常结束与非正常结束。
    可以防止丢失修改,并保证事务T是可以恢复的,但是不能保证可重复读和不读的脏数据。
  2. 二级封锁协议
    一级封锁协议+事务T在读取数据R前必须先加S锁,读完后即可释放S锁
    可以防止丢失修改,还可以进一步防止读“脏数据”,不能保证可重复读
  3. 三级封锁协议
    一级封锁协议+事务T在读取数据R前必须先加S锁,直到事务结束才能释放。
    可以防止丢失修改,读“脏数据”和不可重复读
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数据库范式 https://www.zhihu.com/question/24696366 索引 索引可以加快数据...
    EakonZhao阅读 3,286评论 3 23
  • 事务的定义 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元...
    诸葛坚强阅读 1,101评论 0 3
  • 本文在学习了数据库库理论后的一个总结,以加深理解、形成知识架构和方便日后复习 本文大部分(包括文章框架、内容和图片...
    stoneyang94阅读 1,207评论 0 2
  • 广州的午夜,霓虹灯闪烁在黑夜里,谁家的灯光还未熄灭,路灯一列列的站着,笼罩着路上的行人。 夜公交的空调发出很大的响...
    府罗将相阅读 489评论 0 0
  • 标题是在一篇文章里看到的一句话,这也恰恰和叔叔教我的凡事要力争上游不谋而合。然而呢,我并没有做到。 我始终坚信,一...
    本姑娘之音阅读 762评论 0 1