并发控制(一)并发控制概述

并发控制

多用户数据库系统,允许多个用户在同一时刻并发运行事务(可达成百上千)多用户数据库系统涉及并行控制。例:订票系统

多事务执行方式

  1. 事务串行执行
    每个时刻只能有一个事务执行。不能充分利用系统资源,发挥数据库共享资源的特点。
  2. 交叉并发方式
    在单处理系统中,事务的并行执行是由这些并行事务的轮流交叉运行。单处理机中的并行处理并没有真正的并行,但是减少了处理机空闲时间,提高系统效率。
  3. 同时并行方式
    在多处理系统中,每个处理机可以处理一个事务,多个处理机可以同时处理多个事务。真正实现了并发控制
    而本章内容是基于单处理机系统。所以3不包含在本课内容中。

并发控制概述

事务是并发控制的基本单位,并发控制的基本任务是

  1. 对并发操作进行正确调度
  2. 保证事务的隔离
  3. 保证数据库的一致性

例:并发控制失误导致的不一致性

  1. 甲售票点(事务T1)读取剩余票数A = 16
  2. 乙售票点(事务T2)读取剩余票数A = 16
  3. 甲售票点售出一张票,并写入 A := 15
  4. 同时乙售票点售出一张票,并写入 A := 15

实际卖出两张票,数据库却只显示少了一张
以上情况是数据库的不一致性,是由并发操作引起的。在并发操作的情况下,对T1,T2的调度是随机的。若按照上面的调度执行,T1的修改回被T2覆盖.
并发操作带来的不一致性问题包括丢失修改不可重复读读脏数据

丢失修改

#T1
R(A)
A := A - 1
				#T2
				R(A)
				A := A - 1
				W(A)
W(A)

不可重复读

概念: T1读取数据后T2执行更新操作,使T1无法重现前一次的结果
不可重复读包括3种情况

  1. 事务T1读取某一数值,事务T2对其进行了修改,当事务T1再次读取该数据,与第一次读取不一致。
#T1
R(A) = 100
R(B) = 50
sum(A, B) = 150
				#T2
				R(A) = 100
				R(B) = 50
				B := B*2
				W(B)
R(A)
R(B)
sum(A+B) = 250
  1. 事务T1读取某一数值,事务T2对数据进行了删除
  2. 事务T1读取某一数值,事务T2对数据进行了添加
    以上两种称为幻影现象

读脏数据

概念: 指读到不正确的数据

例:

  1. T1读取某一数据进行了修改,并将其写入磁盘(数据库)
  2. T2读取了同一数据后,T1由于某些原因被撤销
  3. 此时该数据已经是T1修改前的值,T2读取的数据与该值不一致
  4. T2读到的数据为脏数据。
#T1
R(C) = 100
C := C*2
W(C)
				#T2
				R(C)
ROLLBACK
#C恢复为100,此时T2中C为脏数据

总结

以上归纳的3种数据不一致性是由于并发操作破坏了事务的隔离性。
并发控制是要用正确的方式进行调度并发操作使一个用户事务不受其他事务的影响从而避免数据的不一致性。数据库的应用有时允许某些不一致性。
并发控制主要技术:封锁(Locking),时间戳(timestamp),乐观控制法(Optimistic scheduler),多版本并发控制(MVCC)

以上内容基于圣才教育数据库系统概论ppt 修改整理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红豆怪怪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值