数据库原理与程序设计第12章-事务处理技术之一并发控制技术_第1页
数据库原理与程序设计第12章-事务处理技术之一并发控制技术_第2页
数据库原理与程序设计第12章-事务处理技术之一并发控制技术_第3页
数据库原理与程序设计第12章-事务处理技术之一并发控制技术_第4页
数据库原理与程序设计第12章-事务处理技术之一并发控制技术_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十二章 事务处理技术之一:并发控制技术生物医学软件工程事务是数据库的一个操作序列,是数据库应用程序的基本逻辑单元。程序、事务、操作事务的开始与结束可以由用户显示的控制。若用户没有显示的定义事务,则由DBMS按缺省规定自动划分事务。12.1 事务概述一个存取或更改数据库的程序的运行称为数据库事务。在数据项和磁盘块的级别上,事务中数据库操作只包括以下两个读写操作:Read (X, Y)Write (Y, X)事务在运行中的状态可以划分为如下五种:(1)活动状态(2)部分提交状态 (3)失败状态(4)异常结束状态(5)提交状态活动状态部分提交状态失败状态提交状态异常结束状态执行完未完成beginc

2、ommit成功吗?rollback撤消影响存盘事务的特性(ACID)原子性(Atomicity):每个事务的所有操作要么被全部成功的执行,要么一个也不被执行。一致性(Consistency):在事务开始之前和事务结束之后,数据库的完整性约束没有被破坏。隔离性(Isolation):两个事务的执行是互不干扰的。持续性(Durability):事务完成后,它对数据库中数据的改变就是永久的,不会被回滚。多个事务并发运行时,不同事务的操作交叉运行。事务在运行中被强制停止。破坏事务的ACID特性12.2 并发控制概述多用户数据库系统:多个用户同时使用的数据库系统。本章讨论的多用户数据库系统仅考虑单处理机

3、。在这种情况下,多个程序的并发运行实际是轮流交叉运行一个存取或改变数据库内容的程序的运行称为一个数据库事务,简称为事务。对多个同时运行的事务需要适当控制,这不但可以减少处理机的空闲时间,提高系统效率,而且可以避免发生一些错误。例如,由于飞机售票系统和银行通存通取业务系统均需要同时处理多个用户提交的数据库事务,因此都属于多用户数据库系统事务T2:在x添加mread(x);x=x+m;write(x).设始值为x=80, n=5,m=4,若按先T1后T2 或先T2后T1的串行执行,结果是x=79;但按左边表格所示的并发执行顺序,结果却是x=84。这个并发执行的结果是错误的。产生错误的原因是T2在T

4、1把更新数据写入磁盘之前读x ,丢失T1对x更新结果两事务并发执行事务T1 事务T2read(x);x=x-n; read(x); x=x+m;write(x);read(y); write(x);y=y+n;write(y).对并发不加控制而引起问题例1:数据更新丢失问题事务T1:在x取出n,加到y上去read(x);x=x-n;write(x);read(y);y=y+n;write(y).事务T1:在x取出n,加到y上去read(x);x=x-n;write(x);read(y);y=y+n;write(y).事务T2:在X添加mread(x);x=x+m;write(x).例2:临时值

5、问题事务T1读y失败,本应恢复x,但x已被T2更新,故无法恢复x。两事务并发执行事务T1 事务T2read(x);x=x-n;write(x) read(x); x=x+m; write(x);read(y);读y失败事务T1:在x取出n,加到Y上去read(x);x=x-n;write(x);read(y);y=y+n;write(y).事务T2:累计x+ys=0read(y);s=s+yread(x);s=s+x;例3:错误聚集计算问题事务T2累积过程中受到事务T1的干扰,因而得出错误结果两事务并发执行事务T1 事务T2 s=0; read(y); s=s+y;read(x);x=x-n;

6、write(x); read(x); s=s+x;read(y);y=y+n;write(y).实际问题例子1:有47件衬衫 销售员A卖出了3件衬衫并登记了这次销售; 销售员B卖出了2件衬衫并登记了这次销售。例子2:银行转帐 从一个用户帐户中提出10000元到另一个用户.12.3 事务的调度和可串行性事务的调度Read(A);A=A-50;Write(A);Read(B);B=B+50;write(B);Read(A);Tmp=A*0.1;A=A-tmp;Write(A);Read(B);B=B+tmp;Write(B);Read(A);Tmp=A*0.1;A=A-tmp;Write(A);R

7、ead(B);B=B+tmp;Write(B);Read(A);A=A-50;Write(A);Read(B);B=B+50;write(B);串行调度:一个事务的所有操作都执行完后才知晓另一个事务的所有操作。并行调度:其他类型的调度。Read(A);A=A-50;Write(A);Read(A);Tmp=A*0.1;A=A-tmp;Write(A);Read(B);B=B+50;write(B);Read(B);B=B+tmp;Write(B);Read(A);A=A-50;Read(A);Tmp=A*0.1;A=A-tmp;Write(A);Read(B);Write(A);Read(B)

8、;B=B+50;write(B); B=B+tmp;Write(B);可串行性:并发运行的多个事务的运行效果与这些事务按某种次序顺序运行的效果相同。Slock BY=read(B)=2;Slock AX=read(A)=2;Unlock(B)Unlock(A)Xlock(A)A=Y+1=3;Write(A)Xlock(B)B=X+1=3;Write(B)Unlock(A)Unlock(B)Slock BY=read(B)=2;Unlock(B)Xlock(A) Slock AA=Y+1=3; Write(A)Unlock(A) X=read(A)=3;Unlock(A)Xlock(B)B=X+

9、1=4;Write(B)Unlock(B)12.4 基于锁的并发控制协议我们要求事务具有可串行性,如何保证事务具有可串行性?在互斥的方式下存取数据项,即当一个事务存取一个数据项时,不允许其他事务修改这个数据项。基于锁的互斥并发控制方法,称为基于锁的协议。问题的解决:基于锁的并发控制协议共享锁:如果事务T得到了数据项Q上的共享锁,则T可以读这个数据项,但不能够写这个数据项。互斥锁:如果事务T得到了数据项Q上的互斥锁,则T既可以读这个数据项,也可以写这个数据项。SX-S相容不相容相容X不相容不相容相容-相容相容相容要求系统中的每个事务在加锁或释放锁时,都必须遵守一定的规则,这就是锁协议。两段锁协议

10、:要求每个事务分为两个阶段进行数据项的加锁和解锁。加锁阶段:可以申请任何数据项上的任何锁,不能释放任何锁。解锁阶段:可以释放任何数据项上的任何锁,但不能再申请锁。问题1:两事务并发执行事务T1事务T2Xlock(x)waitingXlock(y)waitingRead(x)waitingx=x-nwaitingwrite(x);waitingUnlock(x)Xlock(x)read(y);Read(x)y=y+n;x=x+mwrite(y)write(x)Unlock(y)Unlock(x)事务T1事务T2Xlock(x)WaitingXlock(y)WaitingRead(x)Waitingx=x-nWaitingwrite(x);Waitingread(y);rollbackWaitingUnlock(x)Xlock(x)Unlock(y)Read(x)x=x+mwrite(x)Unlock(x)事务T1事务T2X

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论