数据库原理与应用第9章课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据库原理与应用第9章课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 应用 课件
- 资源描述:
-
1、第九章第九章 事务及并发控制事务及并发控制v9.19.1事务事务v9.29.2数据库的并发控制数据库的并发控制v9.3 SQL Server9.3 SQL Server数据库的并发控制数据库的并发控制本章目录本章目录v掌握事务的概念及其掌握事务的概念及其ACIDACID性质;性质;v理解数据库并发控制的必要性;理解数据库并发控制的必要性;v掌握掌握DBMSDBMS并发控制的基本原理与技术并发控制的基本原理与技术;v掌握封锁技术带来的问题及解决方法掌握封锁技术带来的问题及解决方法;v了解了解SQL ServerSQL Server数据库的并发控制机制数据库的并发控制机制学习目标学习目标 9.19
2、.1事务事务v9.1.19.1.1事务的定义事务的定义v9.1.29.1.2事务的事务的ACIDACID性质性质v9.1.9.1.事务的状态事务的状态9.1.1事务的定义 从账号向账号转移资金的例子,命名为事务:从账号向账号转移资金的例子,命名为事务: :BEGINBEGIN READ(A); READ(A); A:=A-50000; A:=A-50000; WRITE(A); WRITE(A); READ(B); READ(B); B:=B+50000; B:=B+50000; WRITE(B); WRITE(B); COMMIT COMMIT 当出现程序故障,则执行回滚操作,其操作后两行变
3、为:当出现程序故障,则执行回滚操作,其操作后两行变为: ABORTABORT ROLLBACK ROLLBACK注:注:ABORTABORT是指异常。是指异常。 一、事务一、事务(Transaction)(Transaction)v定义定义 一个数据库操作序列一个数据库操作序列 一个不可分割的工作单位(要么全做要么全不做)一个不可分割的工作单位(要么全做要么全不做) 恢复和并发控制恢复和并发控制的基本单位的基本单位v事务和程序比较事务和程序比较 在关系数据库中,一个事务可以是一条或多条在关系数据库中,一个事务可以是一条或多条SQLSQL语句语句, ,也可以包含一个或多个程序。也可以包含一个或多
4、个程序。 一个程序通常包含多个事务一个程序通常包含多个事务批与事务的区别v一个批可以包含多个事务,一个事务也一个批可以包含多个事务,一个事务也可以包含多个批。两者的区别是,可以包含多个批。两者的区别是,批语批语句的组合发生在编译阶段,句的组合发生在编译阶段,而而事务语句事务语句的组合发生在执行阶段的组合发生在执行阶段。在在T-SQLT-SQL语言中,定义事务语句有语言中,定义事务语句有4 4条:条:vBEGIN TRANSACTION(BEGIN TRANSACTION(标明事务的开始标明事务的开始) )vCOMMIT(COMMIT(标明事务的成功提交标明事务的成功提交) ) vROLLBAC
5、K (ROLLBACK (标明事务的回滚标明事务的回滚) )vSAVE TRANSACTION(SAVE TRANSACTION(建立保存点建立保存点) )建立一个保存点,使用户能将事务回滚到该保建立一个保存点,使用户能将事务回滚到该保存点的状态,而不是简单回滚整个事务。存点的状态,而不是简单回滚整个事务。v 事务事务(Transaction)(Transaction)事务举例建立一个显式事务以显示建立一个显式事务以显示salessales数据库数据库employeeemployee表的数据表的数据BEGIN TRANSACTION T1BEGIN TRANSACTION T1 select
6、select * * from employee from employeeCOMMIT TRANSACTION T1COMMIT TRANSACTION T1 例例 使用使用ROLLBACK TRANSACTIONROLLBACK TRANSACTION语句标识事务结束语句标识事务结束BEGIN TRANSACTIONBEGIN TRANSACTION UPDATE goods UPDATE goods SET stock_quantity=stock_quantity-5 SET stock_quantity=stock_quantity-5 WHERE goods_id=G00006 W
7、HERE goods_id=G00006 INSERT INTO sell_order(order_id1,goods_id, INSERT INTO sell_order(order_id1,goods_id, order_num,order_date) order_num,order_date) VALUES (S00005,G00006,5,getdate( ) ) VALUES (S00005,G00006,5,getdate( ) )ROLLBACK TRANSACTIONROLLBACK TRANSACTIONBEGIN TRANSACTION BEGIN TRANSACTION
8、my_deletemy_delete DELETE FROM department WHERE DELETE FROM department WHERE department_id=D005department_id=D005 SAVE TRANSACTION after_deleteSAVE TRANSACTION after_delete UPDATE UPDATE employee SET department_id=D001 WHERE employee SET department_id=D001 WHERE department_id=D005department_id=D005
9、例从例从departmentdepartment表中删除仓储部,再将仓储部的表中删除仓储部,再将仓储部的职工划分到总经理办。职工划分到总经理办。IFIF ( error!=0 OR rowcount ( error!=0 OR rowcount=0 )=0 ) BEGIN BEGIN ROLLBACK TRANSACTION ROLLBACK TRANSACTION after_delete after_delete COMMIT TRANSACTIONCOMMIT TRANSACTION my_deletemy_delete END ENDELSEELSE COMMIT TRANSACTIO
10、NCOMMIT TRANSACTION my_deletemy_deleteGOGO9.1.1事务的定义事务的要点归纳如下:事务的要点归纳如下:v事务是一个原子工作单元。事务是一个原子工作单元。v事务必须使数据库保持一致状态;它必须要么完事务必须使数据库保持一致状态;它必须要么完整执行,要么根本不执行。整执行,要么根本不执行。v除非使用特殊语句标明分界点,否则数据库管理除非使用特殊语句标明分界点,否则数据库管理系统不能检测到各个事务在应用程序的起点和终系统不能检测到各个事务在应用程序的起点和终点。点。v在完成事务时,有两种可能结果:数据库进入新在完成事务时,有两种可能结果:数据库进入新的一致状
11、态;部分数据库更新回滚使数据库还原的一致状态;部分数据库更新回滚使数据库还原到旧的一致状态。到旧的一致状态。v同一程序的事务不能嵌套。同一程序的事务不能嵌套。COMMITCOMMIT和和ROLLBACKROLLBACK只在事务进行时执行。只在事务进行时执行。v如果未在事务的开始和结尾标注特殊语句,数据如果未在事务的开始和结尾标注特殊语句,数据库管理系统将把整个程序的开始和结尾看作程序库管理系统将把整个程序的开始和结尾看作程序中事务的起点和终点。中事务的起点和终点。9.1.1事务的定义提提 问问v1 1、用户的权限有哪几类?如何授权?、用户的权限有哪几类?如何授权?v2 2、什么是角色?如何为角
12、色授权?、什么是角色?如何为角色授权?v2 2、什么是事务?、什么是事务?v3 3、如何定义事务?、如何定义事务?事事 务务v对数据库所做的一系列修改,在修改过程中,暂对数据库所做的一系列修改,在修改过程中,暂时不写入数据库,而是缓存起来,用户在自己的时不写入数据库,而是缓存起来,用户在自己的终端可以预览变化,直到全部修改完成,并经过终端可以预览变化,直到全部修改完成,并经过检查确认无误后,一次性提交并写入数据库,在检查确认无误后,一次性提交并写入数据库,在提交之前,必要的话所做的修改都可以取消。提交之前,必要的话所做的修改都可以取消。v提交之后,就不能撤消,提交成功后其他用户才提交之后,就不
13、能撤消,提交成功后其他用户才可以通过查询浏览数据的变化。可以通过查询浏览数据的变化。 事务模式 SQL Server SQL Server以以3 3种事务模式管理事务:种事务模式管理事务:(1)(1)自动提交事务模式自动提交事务模式:每条单独的语句都是:每条单独的语句都是一个事务。在此模式下,每条一个事务。在此模式下,每条Transact-SQLTransact-SQL语句在成功执行完成后,都被自动提交,如果语句在成功执行完成后,都被自动提交,如果遇到错误,则自动回滚该语句。该模式为系统遇到错误,则自动回滚该语句。该模式为系统默认的事务管理模式。默认的事务管理模式。(2) (2) 显式事务模式
14、显式事务模式:该模式允许用户定义事务的启动和:该模式允许用户定义事务的启动和结束。事务以结束。事务以BEGIN TRANSACTIONBEGIN TRANSACTION语句显式开语句显式开始,以始,以COMMITCOMMIT或或ROLLBACKROLLBACK语句显式结束。语句显式结束。(3) (3) 隐性事务模式隐性事务模式:在当前事务完成提交或回滚后,新:在当前事务完成提交或回滚后,新事务自动启动。隐性事务不需要使用事务自动启动。隐性事务不需要使用BEGIN BEGIN TRANSACTIONTRANSACTION语句标识事务的开始,但需要以语句标识事务的开始,但需要以COMMITCOMM
15、IT或或ROLLBACKROLLBACK语句来提交或回滚事务。语句来提交或回滚事务。事务模式事务的事务的ACIDACID特性:特性:v 原子性(原子性(A Atomicitytomicity)v 一致性(一致性(C Consistencyonsistency)v 隔离性(隔离性(I Isolationsolation)v 持续性(持续性(DDurability urability )9.1.2事务的ACID性质9.1.9.1.事务的状态事务的状态图图9-1 9-1 事务状态图事务状态图ROLLBACKROLLBACK COMMITCOMMITWRITEWRITEREADREADENDEND异常
16、异常中止中止失败失败全部全部提交提交活动活动部分部分提交提交BEGINBEGINABORTABORTABORTABORTv9.19.1事务事务v9.29.2数据库的并发控制数据库的并发控制v9.3 SQL Server9.3 SQL Server数据库的并发控制数据库的并发控制本章目录本章目录问题的产生问题的产生v多用户数据库系统的存在多用户数据库系统的存在 允许多个用户同时使用的数据库系统允许多个用户同时使用的数据库系统n飞机订票数据库系统飞机订票数据库系统n银行数据库系统银行数据库系统 特点:在同一时刻并发运行的事务数可特点:在同一时刻并发运行的事务数可 达数百个达数百个 问题的产生(续)
17、问题的产生(续)v不同的多事务执行方式不同的多事务执行方式 (1)(1)事务串行执行事务串行执行每个时刻只有一个事务运每个时刻只有一个事务运行,其他事务必须等到这行,其他事务必须等到这个事务结束以后方能运行个事务结束以后方能运行T1T2T3事务的串行执行方式事务的串行执行方式问题的产生(续)问题的产生(续)(2)(2)交叉并发方式交叉并发方式(Interleaved ConcurrencyInterleaved Concurrency)在在单处理机系统单处理机系统中,事务的并行执行是这中,事务的并行执行是这些并行事务的并行操作些并行事务的并行操作轮流交叉运行轮流交叉运行单处理机系统中的并行事务
18、并没有真正地单处理机系统中的并行事务并没有真正地并行运行,但能够减少处理机的空闲时间,并行运行,但能够减少处理机的空闲时间,提高系统的效率提高系统的效率问题的产生(续)问题的产生(续)事务的交叉并发执行方式问题的产生(续)问题的产生(续) (3) (3)同时并发方式同时并发方式 (simultaneous concurrencysimultaneous concurrency)多处理机系统中,每个处理机可以运行多处理机系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多一个事务,多个处理机可以同时运行多个事务,实现多个事务真正的并行运行个事务,实现多个事务真正的并行运行问题的产生(续)
19、问题的产生(续)v事务并发执行带来的问题事务并发执行带来的问题会产生多个事务同时存取同一数据会产生多个事务同时存取同一数据的情况的情况 可能会存取和存储不正确的数据,可能会存取和存储不正确的数据,破坏破坏事务一致性事务一致性和和数据库的一致性数据库的一致性T1T1的修改被的修改被T2T2覆盖了!覆盖了!并发控制概述(续)并发控制概述(续)并发操作带来数据的不一致性实例并发操作带来数据的不一致性实例 例例11飞机订票系统中的一个活动序列飞机订票系统中的一个活动序列 甲售票点甲售票点( (甲事务甲事务) )读出某航班的机票余额读出某航班的机票余额A A,设,设A=16A=16; 乙售票点乙售票点(
20、 (乙事务乙事务) )读出同一航班的机票余额读出同一航班的机票余额A A,也为,也为1616; 甲售票点卖出一张机票,修改余额甲售票点卖出一张机票,修改余额AA-1AA-1,所以,所以A A为为1515,把把A A写回数据库;写回数据库; 乙售票点也卖出一张机票,修改余额乙售票点也卖出一张机票,修改余额AA-1AA-1,所以,所以A A为为1515,把把A A写回数据库写回数据库 n结果明明卖出两张机票,数据库中机票余额只减少结果明明卖出两张机票,数据库中机票余额只减少1 1 并发控制概述(续)并发控制概述(续)v这种情况称为数据库的不一致性,是由并这种情况称为数据库的不一致性,是由并发操作引
21、起的。发操作引起的。v在并发操作情况下,对甲、乙两个事务的在并发操作情况下,对甲、乙两个事务的操作序列的调度是随机的。操作序列的调度是随机的。v若按上面的调度序列执行,甲事务的修改若按上面的调度序列执行,甲事务的修改就被丢失。就被丢失。v9.2.19.2.1并发操作引发的问题并发操作引发的问题v9.2.29.2.2封锁技术封锁技术v9.2.39.2.3封锁协议封锁协议v9.2.49.2.4封锁带来的问题封锁带来的问题v9.2.59.2.5并发调度的可串行性并发调度的可串行性9.2 9.2 数据库的并发控制数据库的并发控制9.2.19.2.1并发操作引发的问题并发操作引发的问题v并发操作带来的数
22、据不一致性并发操作带来的数据不一致性 丢失修改丢失修改(Lost UpdateLost Update) 不可重复读不可重复读(Non-repeatable ReadNon-repeatable Read) 读读“脏脏”数据数据(Dirty ReadDirty Read)v记号记号 R(xR(x): ):读数据读数据x x W(xW(x): ):写数据写数据x x 1. 1. 丢失修改丢失修改v两个事务两个事务T T1 1和和T T2 2读入同一数据并修改,读入同一数据并修改,T T2 2的提交结果破坏了的提交结果破坏了T T1 1提交的结果,导提交的结果,导致致T T1 1的修改被丢失。的修改
23、被丢失。丢失修改(续)丢失修改(续)T T1 1T T2 2 R(A)=16R(A)=16R(A)=16R(A)=16 AA-1AA-1 W(A)=15WW(A)=15WAA-1AA-1W(A)=15W(A)=15丢失修改丢失修改2. 2. 不可重复读不可重复读v不可重复读不可重复读v是指事务是指事务T T1 1读取数据后,事务读取数据后,事务T T2 2执行更新操作,使执行更新操作,使T T1 1无法再现前一无法再现前一次读取结果。次读取结果。不可重复读(续)不可重复读(续)v不可重复读包括三种情况:不可重复读包括三种情况:(1)(1)事务事务T T1 1读取某一数据后,读取某一数据后,事务
24、事务T T2 2对其对其做了修改做了修改,当事务,当事务T T1 1再次读该数据时,再次读该数据时,得到与前一次不同的值得到与前一次不同的值 不可重复读(续)不可重复读(续)T T1 1T T2 2 R(A)=50R(A)=50 R(B)=100R(B)=100求和求和=150=150R(B)=100R(B)=100BBBB* *2 2(B)=200(B)=200 R(A)=50R(A)=50R(B)=200R(B)=200和和=250=250( (验算不对验算不对) )不可重复读不可重复读 例如:不可重复读(续)不可重复读(续)(2)(2)事务事务T1T1按一定条件从数据库中读取了某些数据记
25、录按一定条件从数据库中读取了某些数据记录后,后,事务事务T2T2删除了其中部分记录删除了其中部分记录,当,当T1T1再次按相同再次按相同条件读取数据时,发现某些记录消失了条件读取数据时,发现某些记录消失了 (3)(3)事务事务T1T1按一定条件从数据库中读取某些数据记录后,按一定条件从数据库中读取某些数据记录后,事务事务T2T2插入了一些记录插入了一些记录,当,当T1T1再次按相同条件读取再次按相同条件读取数据时,发现多了一些记录。数据时,发现多了一些记录。 后两种不可重复读有时也称为后两种不可重复读有时也称为幻影幻影现象现象(Phantom RowPhantom Row)3. 3. 读读“脏
展开阅读全文