数据库并发控制概述

事物是并发控制的基本单位。保证事物的ACID特性是事物处理的重要任务。

而事物的ACID特性被破坏的原因之一是多个事物对数据的并发操作造成的。

事物的并发操作会造成三类问题:丢失修改不可重复读脏读

丢失修改

当事物T1和事物T2同时读取同一记录,T2的提交导致T1的提交被覆盖。

不可重复读

也称幻读,T1读取两次记录,后一次用作验证,在第二次读之前,T2修改、增加、删除都会导致T1的两次读取结果不同。

脏读

T1对某条记录进行操作,T2在其后读取该记录,然后由于某种原因T1撤销提交事务,导致T2读取的是错误的数据。

 

那么如何解决上述问题呢?

并发控制机制就是要用正确的方式调度并发操作,保证一个事物的执行不受其他事物的干扰。

并发控制的主要技术有:封锁时间戳客观控制法多版本并发控制等。

封锁

封锁就是事物在对某个数据对象如表、记录操作之前,先向系统发出请求,对其加锁。这样,该事物释放锁之前,其他事物都无法对其进行操作。

封锁的类型有两种:排它锁(exclusive locks,简称X锁)、共享锁(share locks,简称S锁)。

排它锁又称为写锁。当事物T对数据对象A加了X锁,则只允许T读取和修改A,在T释放X锁之前,其他事物都不能对A进行读取和写入。

共享锁又称为读锁。当事物T对数据对象A加了S锁,则只能读取A,不能修改A,其他事物可以对A加S锁,但不能加X锁。

 

关于何时申请X锁或S锁、持锁时间、何时释放等,还要有一些规则,这些规则成为封锁协议

一级封锁协议

事物T在修改数据之前,必须先对其加X锁,直到事务结束才释放。

二级封锁协议

在一级封锁协议的基础上增加事物T在读取数据R之前必须对其加S锁,读完后即可立即释放S锁。

三级封锁协议

在一级封锁协议的基础上增加事物T在读取数据R之前必须对其加S锁,直到事物结束才释放S锁。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值