有关数据库的一级、二级、三级封锁协议

本文详细介绍了数据库的一级、二级和三级封锁协议,旨在防止丢失修改、读脏数据和不可重复读等问题。一级协议确保事务在修改数据前加X锁,二级协议在一级基础上增加读取数据前加S锁,而三级协议则要求读取数据时保持S锁直至事务结束,以保证可重复读。封锁协议是确保数据库事务一致性的重要机制。
摘要由CSDN通过智能技术生成

一级封锁协议

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

丢失修改:不加锁修改之后被其它事务修改了
写:加X锁->修改数据R->成功或失败->释放X锁

读:不加锁,导致读到别的事务未提交数据,且多次读结果不一致

二级封锁协议

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

写:同一级封锁协议
读:加S锁->读数据R->读完释放S锁,不会读到别的事务未提交的数据,但多次读会结果还是会不一致
注:在数据R加了X锁之后,不能再加其它锁(其它事务的X锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值