版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 数据库的事务处理与数据恢复6.1 事务管理的基本概念6.2 并发控制6.3 数据库恢复第6章 数据库的事务处理与数据恢复6.1 事务管理的基本6.1 事务管理的基本概念6.1.1 事务(Transaction)的概念6.1.2 事务的状态6.1.3 事务的特性6.1.4 SQL Server中的事务返回首页6.1 事务管理的基本概念6.1.1 事务(Transa6.1.1 事务(Transaction)的概念事务是用户定义的数据库操作序列,这些操作可作为一个完整的工作单元。一个事务内的所有语句是一个整体,要么全部执行,要么全部不执行。即事务是不可再分的原子性工作。如在银行业务中,“从帐
2、户A转移资金X到帐户B”就是一个典型的事务。这个事务可以分解为两个动作:(1)从账户A减去金额X。(2)在账户B中加上金额X。返回本节6.1.1 事务(Transaction)的概念事务是用户6.1.2 事务的状态事务的基本操作包括:(1)事务开始(BEGIN_TRANSACTION)。事务开始执行。(2)事务读写(Read/Write)。事务进行数据操作。(3)事务结束(END_TRANSACTION)。事务完成所有的读/写操作。(4)事务交付(COMMIT_TRANSACTION)。事务完成所有的读/写操作,并保存操作结果。6.1.2 事务的状态事务的基本操作包括:返回本节返回本节6.1.
3、3 事务的特性事务所必须具有的重要特性包括:(1)原子性(Atomicity)。(2)一致性(Consistency)。(3)隔离性(Isolation)。(4)持久性(Durability)。 6.1.3 事务的特性事务所必须具有的重要特性包括:上述的四个特性也简称为ACID特性,保证ACID特性是事务处理的重要任务。事务的ACID特性可能遭到破坏的原因有:1)多个事务并行运行时,不同事务的操作交叉执行。2)事务在运行过程中被强迫停止。返回本节上述的四个特性也简称为ACID特性,保证ACID特性是事务处6.1.4 SQL Server中的事务SQL Server的事务分为两种类型:系统提供的
4、事务和用户定义的事务。系统提供的事务是指在执行某些语句时,一条语句就是一个事务,它的数据对象可能是一个或多个表(视图),可能是表(视图)中的一行数据或多行数据;用户定义的事务以BEGIN TRANSACTION语句开始,以COMMIT或ROLLBACK结束。 6.1.4 SQL Server中的事务SQL Serve其中:BEGIN TRANSACTION:事务的开始标记。COMMIT TRANSACTION:事务的结束标记。OLLBACK TRANSACTION:回滚。 返回本节其中:返回本节6.2 并发控制6.2.1 并发操作引起的问题6.2.2 封锁6.2.3 封锁出现的问题及解决方法6
5、.2.4 可串行化调度6.2.5 SQL Server的并发控制机制返回首页6.2 并发控制6.2.1 并发操作引起的问题返回首页6.2.1 并发操作引起的问题对事务的并发执行如果不加以控制,可能会导致数据库中数据的不一致性。一个最常见的并发操作的例子是飞机订票系统中的订票操作。例如,在该系统中的一个活动的序列:(1)事务T1(动作1):甲售票员读出某航班的机票余额A,设A=16。(2)事务T2(动作1):乙售票员读出同一航班的机票余额,A也为16。(3)事务T1(动作2):甲售票员卖出一张机票,修改机票余额AA-1,所以A=15,把A写入数据库。(4)事务T2(动作2):乙售票员卖出两张机票
6、,修改机票余额AA-2,所以A=14,把A写入数据库。6.2.1 并发操作引起的问题对事务的并发执行如果不加以控并发操作如果不加以控制,就可能引发下列数据的不一致性:1丢失修改(Lost Update)2不可重复读(Unrepeatable Read)3读“脏”数据(Dirty Read) 并发操作如果不加以控制,就可能引发下列数据的不一致性:1丢失修改(Lost Update)丢失修改是指事务T1与事务T2从数据库中读入同一数据并修改,事务T2提交的修改结果破坏了事务T1提交的修改结果,导致事务T1的修改被丢失。丢失修改的情况如图6-2所示。1丢失修改(Lost Update)调度时刻事务T
7、1事务T2t1读A16t2读A16t3A=A-1写回A15t4A=A-2写回A14(覆盖了T1对A的修改)图6-2 丢失修改调度时刻事务T1事务T2t1读A16t2读A16t32不可重复读(Unrepeatable Read)即事务T1两次读取同一数据项A的内容不一致。究其原因,是在两次读操作之间,事务T2也修改了数据项A。不可重复读的情况如图6-3所示。2不可重复读(Unrepeatable Read)调度时刻事务T1事务T2t1读A50读B100求和150t2读B100BB*2写回B=200t3读A50读B200求和250(验算不对)图6-3 不可重复读调度时刻事务T1事务T2t1读A50
8、t2读B100t3读“脏”数据(Dirty Read)即事务T1读取了经过事务T2修改过的数据,但是由于事务T2因为流产而撤消了对该数据的修改,数据库恢复到事务T2执行前的状态,从而导致事务T1读取的内容与数据库中的内容不一致。读“脏”数据的情况如图6-4所示。3读“脏”数据(Dirty Read)调度时刻事务T1事务T2t1读B100BB*2写回B=200t2读B200(读入T2的脏数据)t3ROLLBACK(B恢复为100)图6-4 读“脏”数据返回本节调度时刻事务T1事务T2t1读B100t2读B2006.2.2 封锁1封锁的类型DBMS通常提供了多种类型的封锁。一个事务对某个数据对象加
9、锁后究竟拥有什么样的控制是由封锁类型决定的。基本的封锁类型有两种:排它锁(Exclusive Lock,简称X锁)和共享锁(Share Lock,简称为S锁)。(1)排它锁。(2)共享锁。 6.2.2 封锁1封锁的类型数据库系统原理与应用第6章-数据库的事务处理与数据恢复课件2保证数据一致性的封锁协议三级封锁协议所谓封锁协议就是在对数据库加锁、持锁和释放锁时所约定的一些规则。例如,应何时申请X锁或S锁、持锁时间、何时释放等。不同的封锁规则形成了不同的封锁协议,下面介绍三级封锁协议。(1)一级封锁协议。(2)二级封锁协议。(3)三级封锁协议2保证数据一致性的封锁协议三级封锁协议(1)一级封锁协议
10、。一级封锁协议是事务T在修改数据之前必须先对其加X锁,直到事务结束才释放。一级封锁协议可有效防止丢失修改,并保证事务T是可恢复的。例如,图6-6使用一级封锁协议解决了图6-2中的丢失修改问题。(1)一级封锁协议。调度时刻事务T1事务T2t1获得Xlock At2读A16Xlock A等待t3A=A-1写回A15CommitUnlock A等待等待等待t4获得Xlock A读A15A=A-2写回A13CommitUnlock A图6-6没有丢失修改调度时刻事务T1事务T2t1获得Xlock At2读A1(2)二级封锁协议。二级封锁协议是在一级封锁协议加上事务T对要读取的数据加S锁,读完后即可释放
11、S锁。二级封锁协议除防止了丢失修改还可进一步防止读“脏”数据。例如,图6-7使用二级封锁协议解决了图6-4中读“脏”数据的问题。(2)二级封锁协议。调度时刻事务T1事务T2t1Xlock B读B100BB*2写回B=200t2SlockB等待t3ROLLBACK(B恢复为100)Unlock Bt4获得Slock B读B100Unlock B图6-7不读“脏”数据调度时刻事务T1事务T2t1Xlock Bt2SlockB(3)三级封锁协议。三级封锁协议是事务T在读取数据之前必须先对其加S锁,在要修改数据之前必须先对其加X锁,直到事务结束后才释放所有的锁。例如图6-8使用了三级封锁协议解决了图6
12、-3中的不可重复读问题。(3)三级封锁协议。调度时刻事务T1事务T2t1Slock A读A50Slock B读B100求和150t2XlockB等待t3读A50读B100求和150CommitUnlock AUnlock B等待t4获得Xlock读B100BB*2写回B=200CommitUnlock B图6-8可重复读调度时刻事务T1事务T2t1Slock At2Xlock封锁协议X锁S锁不丢失修改不读脏数据可重复读一级事务全程加锁不加锁二级事务全程加锁事务开始加锁,读完即释放三级事务全程加锁事务全程加锁表6-1 不同级别的封锁协议返回本节封锁协议X锁S锁不丢失修改不读脏数据可重复读一级事务
13、6.2.3 封锁出现的问题及解决方法1活锁在多个事务请求对同一数据封锁时,总是使某一事务等待的情况称为活锁。例如:如果事务T1封锁了数据R后,T2也请求封锁R,于是T2等待。接着T3也请求封锁R。假如T1释放R上的锁后,系统首先批准了T3的请求,T2只得继续等待。接着T4也请求封锁R,T3释放R上的锁后,系统又批准了T4的请求,T2有可能就这样永远等待下去。6.2.3 封锁出现的问题及解决方法1活锁2死锁多个并发事务处于相互等待的状态,其中的每一个事务都在等待它们中的另一个事务释放封锁,这样才可以继续执行下去,但任何一个事务都没有释放自己已获得的锁,也无法获得其他事务已拥有的锁,所以只好相互等
14、待下去,这就产生了死锁。2死锁调度 时刻事务T1事务T2t1Xlock At2Xlock Bt3Xlock B等待t4Xlock A等待图6-9死锁调度 时刻事务T1事务T2t1Xlock At2Xlo目前在数据库中解决死锁问题主要有两类方法,一类方法是采取一定措施来预防死锁的发生,另一类方法是允许发生死锁,然后采用一定手段定期诊断系统中有无死锁,若有则解除之。(1)死锁的预防。1)一次封锁法。2)顺序封锁法。 (2)死锁的检测与解除。 目前在数据库中解决死锁问题主要有两类方法,一类方法是采取一定返回本节返回本节6.2.4 可串行化调度所谓的两段锁协议是指所有事务必须分两个阶段对数据项进行加锁
15、和解锁。具体体现在:(1)在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁;(2)释放一个封锁之后,事务不再申请并获得对任何数据的封锁。6.2.4 可串行化调度所谓的两段锁协议是指所有事务必须分所谓两段锁的含义是:事务分为两个阶段,第一阶段是获得封锁,也称为扩展阶段。在这个阶段,事务可以申请获得任何数据项上的任何类型的锁,但不能释放任何锁。第二阶段是释放封锁,也称为收缩阶段。在这个阶段,事务可以释放任何数据项上的任何类型的锁,但是不能申请任何锁。返回本节所谓两段锁的含义是:事务分为两个阶段,第一阶段是获得封锁,也6.2.5 SQL Server的并发控制机制1SQL Server
16、的空间管理及锁的级别2SQL Server锁的类型6.2.5 SQL Server的并发控制机制1SQL 1SQL Server 的空间管理及锁的级别(1)行和行级锁。(2)页和页级锁。(3)簇和簇级锁。(4)表级锁。(5)数据库级锁。 1SQL Server 的空间管理及锁的级别(1)行和行级2SQL Server锁的类型一般情况下,SQL Server 能自动提供加锁功能,而不需要用户专门设置,这些功能表现在:(1)当使用SELECT语句访问数据库时,系统能自动用共享锁访问数据;在使用INSERT、UPDATE和DELETE语句增加、修改和删除数据时,系统回自动给使用数据加排它锁。(2)系
17、统可用意向锁使锁之间的冲突最小化。意向锁建立一个锁机制的分层结构,其结构按行级锁层和表级锁层设置。2SQL Server锁的类型一般情况下,SQL Serv(3)当系统修改一个页时,会自动加修改锁。修改锁和共享锁兼容,而当修改了某页后,修改锁会上升为排它锁。(4)当操作涉及到参考表或者索引时, SQL Server会自动提供模式稳定锁和模式修改锁。返回本节(3)当系统修改一个页时,会自动加修改锁。修改锁和共享锁兼容6.3 数据库恢复6.3.1数据库系统的故障6.3.2 数据库备份技术6.3.3 数据库恢复策略6.3.4SQL Server的数据备份和恢复返回首页6.3 数据库恢复6.3.1数据
18、库系统的故障返回首页6.3.1数据库系统的故障1事务故障2系统故障 3介质故障 返回本节6.3.1数据库系统的故障1事务故障返回本节6.3.2 数据库备份技术1数据转储2日志文件6.3.2 数据库备份技术1数据转储1数据转储(1)静态转储和动态转储。1)静态转储是在系统中没有运行其他事务时进行的转储操作。 2)动态转储是指转储操作与用户事务并发进行,转储期间允许对数据库进行存取或修改。 (2)海量转储和增量转储。海量转储是指每次转储全部数据库。增量转储是指转储上次转储后更新过的数据。1数据转储(1)静态转储和动态转储。2日志文件(1)日志文件的格式和内容。各个事务的开始(BEGIN TRANS
19、ACTION)标记。事务标识(标明是哪个事务)。操作的类型(插入、删除或修改)。操作对象。更新前数据的旧值(对插入操作而言,此项为空值)。更新后数据的新值(对删除操作而言,此项为空值)。各个事务的结束(COMMIT或ROLLBACK)标记。 (2)登记日志文件。 返回本节2日志文件(1)日志文件的格式和内容。返回本节6.3.3 数据库恢复策略1事务故障的恢复具体的恢复步骤为:(1)反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。(2)对该事务的更新操作执行逆操作。(3)重复执行(1)和(2),恢复该事务的其他更新操作,直至读到此事务的开始标记,事务故障恢复就完成了。 6.3
20、.3 数据库恢复策略1事务故障的恢复2系统故障的恢复具体的恢复步骤为:(1)正向扫描日志文件(即从头扫描日志文件),找出在故障发生前已经提交的事务(这些事务既有BERGIN TRANSACTION 记录,也有COMMIT记录),将其事务标识记入重做(REDO)队列。(2)对撤消队列中的各个事务进行撤消(UNDO)处理。(3)对重做队列中的各个事务进行重做(REDO)处理。2系统故障的恢复3介质故障的恢复介质故障是指磁盘上的物理数据和日志文件均遭破坏,这是最严重的一种故障。恢复方法是首先重装数据库,使数据库管理系统能正常运行,然后利用介质损坏前对数据库已做的备份恢复数据库。具体的恢复步骤为:(1
21、)装入最新的后备数据库副本,使数据库恢复到最近一次转储时的一致性状态。(2)装入相应的日志文件副本(转储结束时刻的日志文件的副本),重做已完成的事务。 返回本节3介质故障的恢复返回本节6.3.4SQL Server的数据备份和恢复SQL Server具有比较强大的数据备份和恢复功能,提供了海量备份和增量备份、静态备份和动态备份等多种备份方式,并具有日志和检查点两种数据恢复技术。用户可以使用Transact-SQL语句,也可以通过SQL Server 的Enterprise Manager进行数据备份和数据恢复。6.3.4SQL Server的数据备份和恢复SQL SSQL Server 200
22、0提供了四种数据库备份与恢复数据的方式:全库备份:备份整个数据库。日志备份:备份日志文件。差异备份:仅备份自上次全库备份后被修改过的数据页。文件或文件组备份:对组成数据库的文件或文件组进行单独的备份。SQL Server 2000提供了四种数据库备份与恢复数据例6-1 对BOOKSYS数据库做一次全库备份。备份(BACKUP)语句如下:BACKUP DATABASE BOOKSYS /*对BOOKSYS数据库进行备份*/TO MYBAK /*备份设备为MYBAK * /WITH INIT, /*此设备将覆盖以前所有的备份*/NAME=BOOKSYSBAK /*备份的名字为BOOKSYSBAK */例6-1 对BOOKSYS数据库做一次全库备份。例6-2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年预防接种上岗培训考试试题(+答案)
- 2025年月血液内科医疗纠纷应急培训试题及答案
- 医院急诊科临床操作流程培训手册
- 小学群文阅读教学方案示范
- 语言培训机构教学质量监控制度
- 九年级语文名篇《乡愁》教学方案
- 小学美术教学设计与课堂活动案例
- 2025至2030中国有机婴幼儿辅食认证体系完善与高端市场开拓报告
- 2026年山西经贸职业学院单招职业技能考试题库带答案详解(培优b卷)
- 2026年广州科技贸易职业学院单招职业倾向性测试题库附参考答案详解(预热题)
- 2025年内科主治医师(呼吸内科学)考试题库(含答案)
- 2026江苏南京卧中资环新源城市更新(江苏)有限公司招聘电梯事业部市场开拓岗2人笔试备考试题及答案解析
- 小学语文第二学期教学目标与计划
- 统编版一年级下册道德与法治《第1课 有个新目标(第1课时)》教学课件
- 2026吉林农业大学三江实验室办公室招聘工作人员笔试参考题库及答案解析
- 九师联盟2025-2026学年高三核心模拟卷英语(中) (二)(含答案)
- 包装净菜车间卫生制度
- 海底捞卫生标准制度
- 广东省事业单位2026年集中公开招聘高校毕业生【11066人】笔试备考试题及答案解析
- 仲裁委员会财务制度
- 三级安全教育培训试题及答案(班组级)
评论
0/150
提交评论