第7章事务与并发控制.ppt
《第7章事务与并发控制.ppt》由会员分享,可在线阅读,更多相关《第7章事务与并发控制.ppt(21页珍藏版)》请在优知文库上搜索。
1、第7章 事务与并发控制7.1 事务7.2 并发控制7.1 事务7.1.1 事务的特性事务具有如下特性:原子性(Atomicity),事务是一个不可分割的整体,它对数据库的操作要么全做,要么全不做,即不允许事务部分地完成,若因故障而导致事务未能完成,则应通过恢复功能使数据库回到该事务执行前的状态。一致性(Consistency),事务对数据库的作用应使数据库从一个一致状态转换到另一个一致状态。一致状态是指数据库中的数据满足完整性约束。隔离性(Isolation),多个事务并发执行时,应互不影响,其结果要和这些事务独立执行的结果一样。并发控制就是为了保证事务间的隔离性。持久性(Durability
2、),一旦事务执行成功,则该事务对数据库进行的所有更新都是持久的,即使因数据库故障而受到破坏,DBMS也能恢复。事务的这些特性简称为ACID特性,DBMS一般都能保证事务的ACID特性。7.1.2 事务类型与事务的状态1事务类型事务一般可分为两类:系统事务和用户定义的事务。系统事务又称为隐式事务,指某些特定的SQL语句由系统单独作为一个事务处理,包括的主要语句如下:所有的CREATE语句;所有的DROP语句;INSERT,UPDATE,DELETE语句。例如,执行如下的创建表语句:CREATE TABLE xx(f1 int not null,f2 char(10),f3 varchar(30)
3、这条语句本身就构成了一个事务,它要么建立含3列的表结构,要么对数据库没有任何影响。在实际应用中,大量使用的是用户定义的事务。用户事务的定义方法:用BEGIN TRANSACTION语句指定一个事务的开始,用COMMIT或ROLLBACK语句表明一个事务的结束。注意必须明确指定事务的结束,否则系统将把从事务开始到用户关闭连接之间所有的操作都作为一个事务来处理。7.1.2 事务类型与事务的状态(1)开始事务语法格式:BEGIN TRANSACTION功能:控制事务的开始。(2)结束事务 事务提交语法格式:COMMIT功能:COMMIT语句用于提交事务,即将事务对数据库的所有更新写到物理数据库中,同
4、时,也标志一个事务的结束。事务回滚语法格式:ROLLBACK 功能:事务回滚,即将事务对数据库已完成的操作全部撤销,回滚到事务开始时的状态,它也标志一个事务的结束,ROLLBACK语句将清除自事务的起点或到某个保存点所做的所有数据修改,并且释放由事务控制的资源。以下例子说明事务处理语句的使用。7.1.2 事务类型与事务的状态【例【例7.1】定义一个事务,将“计算机”专业学生的密码改为“1234”,并提交该事务。BEGIN TRANSACTIONUSE XSCJUPDATE XS SET 密码=1234 WHERE 专业=计算机COMMIT在SQL Server 2005中,ROLLBACK还可
5、以加上选项 TRANSACTION|,保存点名或保存点变量名可用SAVE TRANSACTION语句设置:SAVE TRANSACTION 保存点名|保存点变量名【例【例7.2】定义一个事务,向XSCJ数据库的XS表中插入一行数据,然后删除该行。BEGIN TRANSACTION USE XSCJINSERT INTO XS(学号,姓名,性别,出生时间,专业)VALUES(07050104,朱一虹,1,1989-10-21,计算机应用)SAVE TRAN My_savDELETE FROM XS WHERE 姓名=朱一虹ROLLBACK TRAN My_savCOMMIT TRAN7.1.2
6、事务类型与事务的状态执行上述事务后,可知:新插入的数据行并没有被删除,因为事务中使用ROLLBACK语句将操作回滚到保存点My_sav,即删除前的状态。2事务的状态图7.1说明了一个事务对数据库进行操作时,其生存周期内可能进入的状态。图7.1 事务的状态描述7.1.2 事务类型与事务的状态活动状态:表示事务正在执行中。提交未完成状态:表示事务虽然已完成,但事务对数据的更新可能还在缓冲区,未写到数据库中。失败状态:在两种状态下,事务可能进入失败状态。一个处于活动状态的事务在执行过程中发生故障,将进入失败状态。一个处于提交未完成状态的事务执行时发生故障,将进入失败状态。对于处于失败状态的事务必须进
7、行回滚,才能使数据库处于一致状态。提交已完成状态:处于提交已完成状态的事务表示事务已执行完毕,数据已写入数据库,并处于一致状态。终止状态:表示事务执行回滚操作,数据库恢复到事务执行前的一致状态。7.2 并发控制对数据库进行操作的事务可以以串行方式执行,即一个事务执行结束后,另一事务才开始执行,这种调度方式称为串行调度,存在的缺点是系统资源利用率低,对用户响应慢。因此通常采用的方案是多个事务并发执行,这分为两种情况:单处理机情况下,多个事务轮流交叉运行,称为交叉并发方式;多处理机的情况下,多个事务在多个处理机上同时运行,称为同时并发执行,在并发执行方式下,当多个事务同时对数据库中的同一数据进行操
8、作时,如果DBMS 不进行有效的管理和控制,就会破坏数据的一致性。7.2.1 并发控制需解决的问题多个事务并发执行时,数据的不一致主要表现为:数据丢失更新、读“脏”数据、不可重复读。1数据丢失更新所谓丢失更新(Lost Update),是指两个或多个事务在并发执行的情况下,都对同一数据项更新(即先读后改,再写入),从而导致后面的更新覆盖前面的更新。例如,对于联网售票系统,设有两个事务T1,T2都要求访问数据项A,设事务T1,T2执行前A的值为20,T1,T2的执行顺序如图7.2所示,当事务T1读得的值为20,T2读得的值也是20;T1写入A的值为19,T2写入A的值也是19,显然这与事实不符,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 事务 并发 控制
