欢迎来到天天文库
浏览记录
ID:59266017
大小:193.50 KB
页数:35页
时间:2020-09-22
《数据库第4章 并发控制ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章并发控制本章要点并发操作及影响理解事务的概念并发操作的可串行性并发控制及实现技术序言事务并行地运行可充分利用系统资源事务是构成单一逻辑工作单元的操作集合,是并发控制的基本单位.多用户数据库系统中允许多个用户同时使用数据库,即在同一时刻可能有多个事务并行运行.举例:并发控制这种数据库的不一致是由并发操作引起的机票数量AA=16读读A=A-1A=A-1A=15A=15售票点售票点A=16A=16出售1出售1事务T1事务T24.1事务事务事务是构成单一逻辑工作单元的操作集合。它必须以原子的方式执行,即:所有的操作要么都做,要么都不做,是一个不可分割的工作单位。事务的性质
2、(ACID)⑴原子性(Atomicity)⑵一致性(Consistency)⑶隔离性(Isolation)⑷持久性(Durability)事务的开始与结束1.开始事务用“BEGINTRANSACTION”定义事务的开始2.结束事务结束事务通常以下两种方式:(1)成功:COMMIT(2)不成功:ROLLBACK事务的状态事务的执行状态分为5种:⑴活动状态⑵部分提交状态⑶失败状态⑷中止状态⑸提交状态图4.1事务的状态转换图4.2事务调度与并发控制事务的调度事务调度的概念:⑴调度(Schedule):事务的执行次序。⑵串行调度(SerialSchedule):多个事务依次串行
3、执行,且只有当一个事务的所有操作都执行完后才执行另一个事务的所有操作。⑶并行调度(ConcurrentSchedule):利用分时的方法处理多个事务。并发控制当多个事务中的多个事务并发执行时,有可能无法保证事务之间的隔离性,并破坏数据库的一致性、正确性。因此,DBMS的一个重要任务就是要有一种机制去保证事务在并发的存取和修改数据的时候的完整性不被破坏。并发控制机制就是一种在多用户环境下对数据库进行并发操作进行规范的机制,是衡量DBMS性能的重要标志之一。并发控制能给数据库的操作带来很大好处,最明显的有以下两点:(1)改善系统的资源利用率(2)改善短事务的响应时间数据的不
4、一致性经过大量实例分析,发现并发操作的不正确调度可能会带来三种数据不一致性。⒈丢失修改⒉读“脏”数据⒊不可重复读并发操作引起的丢失修改丢失修改事务T1对数据的修改被事务T2的修改覆盖T1读A=16A=A-1写回A=15T2读A=16A=A-1写回A=15并发操作引起的读脏数据读脏数据事务T1修改了某数据并写回磁盘,事务T2读取了同一数据后,T1由于某种原因被撤销,被修改的值复原,此时T2读到的数据与数据库中的数据不一致T1读C=1C=C*2写回C=2ROLLBACKC恢复为1T2读C=2并发操作引起的不可重复读不可重复读事务T1读取某一数据后,事务T2对其做了修改,当T
5、1按同样条件再读时得到不同的值事务T1读取某些数据后,事务T2删除(或插入)了一些记录,当T1按同样条件再读时发现少(或多)了一些记录T1读A=1,B=2求A+B=3读A=1,B=4求A+B=5T2读B=2B=B*2写回B=4小结产生上述三类不一致性的主要原因并发操作破坏了事务的隔离性,事务间相互干扰并发控制的主要技术封锁技术(Locking)可串行化准则假设事务都是串行运行的,一个事务结束(提交或者退回)后,另一个事务才能开始运行,那么就可以认为所有事务的运行结果都是正确的。尽管这些事务假如以不同的顺序运行,可能会对数据库造成不同的影响。以此为判断标准,我们将可串行化
6、的并发调度当作判断事务并发操作的唯一正确性准则。即:假如并发操作调度的结果与按照某种顺序串行执行这些操作的结果相同,就认为并发操作是正确的。[例]并发事务的不同调度策略:假设A,B初值均为2,T1:读B;A=B+1;写回A;T2:读A;B=A+1;写回BT1T2T1T2T1T2Y=B=2A=Y+1X=A=3写回B(=4)B=X+1a串行调度c不可串行化的调度Y=B=2A=Y+1写回A(=3)X=A=2写回B(=3)B=X+1Y=B=2A=Y+1写回A(=3)LockA,BX=A=3写回B(=4)B=X+1等待等待等待T1T2Y=B=3A=Y+1写回A(=4)X=A=2
7、写回B(=3)B=X+1d可串行化的调度b串行调度写回A(=3)结果:A=3,B=4结果:A=4,B=3结果:A=3,B=3结果:A=3,B=4LockA,B...ULockA,BULockA,B4.3封锁管理封锁机制1.封锁的定义所谓封锁指的是事务T对某个数据对象(如关系、记录等)进行操作以前,先请求系统对其加锁,成功加锁之后该事务就对该数据对象有了控制权,在事务T释放它的锁之前,其他的事务不能更新此数据对象,只有事务T对其解锁之后,其他的事务才能更新它。封锁是实现并发控制的一个重要的技术。有两种基本的封锁类型:排它锁(X锁,写锁):若
此文档下载收益归作者所有