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

2019-06-21  本文已影响0人  谢大喵a

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锁,直到事务结束才能释放。
    可以防止丢失修改,读“脏数据”和不可重复读
上一篇下一篇

猜你喜欢

热点阅读