数据库并发控制

数据库并发控制是为了充分利用系统资源,允许事务交叉运行。但并发操作可能导致数据丢失、不可重复读和读脏数据等问题。封锁是一种常见并发控制机制,分为排他锁(写锁)和共享锁(读锁)。封锁协议通过不同规则防止并发问题,例如一级封锁协议防止丢失修改,三级封锁协议保证可重复读。死锁和活锁是并发控制中需解决的问题,可以通过预防或诊断解除策略来应对。多版本并发控制和时间戳方法是替代封锁的并发控制技术,提高系统并发度。
摘要由CSDN通过智能技术生成

数据库并发控制
综述:事务可以一个一个的串行执行,即每个时刻只有一个事务运行,其他事务必须等到这个事务运行结束之后才能运行。事务在执行时需要不同的资源,cpu资源,I/O,有时需要通信。如果事务串行执行,则会导致很多资源闲置,为了充分利用资源,应该允许事务并行执行。在单处理机系统中,事务的并行执行实际上是事务的交叉运行,即同一时刻系统只有一个事务在运行。

并发操作带来的问题

1.丢失数据:两个事务T1和T2读入同一个数据进行修改,T2提交的修改会覆盖T1对数据的修改,导致T1对数据的修改丢失,如定飞机票的例子,
2.不可重复读:事务T1读取数据后,如果T2修改了数据,那么事务T1无法再现前一次读取的结果;包括三种情况:@1:事务T1读取某一数据后,T2对其进行了修改,当T1再次读取该数据时,得到与前一次不一样的值。@2:事务T1读取某一数据后,T2对其进行了删除操作,当T1再次按相同的条件读取时,发现数据记录消失了。@3:T1读取某一数据后,T2进行了插入操作,当T1再次按相同条件读取时,发现多了一些记录。后两种不可重复读现象有时成”幻影”现象
3.读脏数据:T1修改某一数据并写会磁盘,T2读取同一数据后,T1由于某种原因被撤销(rollback),这时T1修改的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就是脏数据,即不正确的数据。
并发控制机制就是要用正确的方式调度并发操作,使一个事务的执行不受其他事务的干扰。并发控制的主要技术有封锁,时间戳和多版本控制法等

封锁

所谓封锁就是事务T在对某个数据对象例如表,记录等操作之前,先向系统发出请求,对其加锁。加锁后T就对该数据对象拥有了一定的控制,在T释放它的锁之前,其他事务不能更新此数据。
基本的封锁类型有两种:排他锁(简称X锁)和共享锁(简称S锁)

排他锁(写锁)

T对数据对象A加上X锁,则只允许T对A进行更新操作,任何其他事务都不能对A加任何类型的锁,直到T释放了A上的锁为止,保证了在T操作A时其他事务都不能再读取或修改A的值。

共享锁(读锁)

T对数据对象A加上S锁,则T可以读A但不能修改A,其他事务只能对A加S锁不能加X锁,直到T释放S锁为止。保证了其他事务可以读A但是不能修改A。

封锁协议

除了X锁和S锁这两种基本的锁,还需要约定一些规则。例如,何时申请X锁或S锁,持锁时间,何时释放等,这些规则称为封锁协议。下面介绍三级封锁协议,分别在不同程度上解决并发带来的问题。

1.一级封锁协议

一级封锁协议指,T在修改数据R之前必须先对其加X锁,直到事务T结束时才能释放,在释放X锁之前,其他事务可以读取该数据。事物结束包括正常结束(commit)和非正常结束(rollback)。一级封锁协议可防止丢失修改。但是如果仅仅是读数据而不对其进行修改,是不需要加锁的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值