《数据库系统原理与应用(第二版)》课件第6章_第1页
《数据库系统原理与应用(第二版)》课件第6章_第2页
《数据库系统原理与应用(第二版)》课件第6章_第3页
《数据库系统原理与应用(第二版)》课件第6章_第4页
《数据库系统原理与应用(第二版)》课件第6章_第5页
已阅读5页,还剩34页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

第六章数据库的事务处理与数据恢复数据库的事务处理与数据恢复6.1事务管理的基本概念6.2并发控制6.3数据库恢复数据库的事务处理与数据恢复

事务是用户定义的数据库操作序列,这些操作可作为一个完整的工作单元。一个事务内的所有语句是一个整体,要么全部执行,要么全部不执行。即事务是不可再分的原子性工作。6.1事务管理的基本概念6.1.1事务(Transaction)的概念(1)事务开始(BEGIN_TRANSACTION)。事务开始执行。(2)事务读写(Read/Write)。事务进行数据操作(活跃)。(3)事务结束(END_TRANSACTION)。事务完成所有的读/写操作。(4)事务交付(COMMIT_TRANSACTION)。事务完成所有的读/写操作,并保存操作结果。数据库的事务处理与数据恢复6.1.2事务的状态6.1.3事务的特性(1)原子性(Atomicity)(2)一致性(Consistency)(3)隔离性(Isolation)(4)持久性(Durability)上述的四个特性也简称为ACID特性

数据库的事务处理与数据恢复6.1.4SQLServer中的事务SQLServer的事务分为两种类型:系统提供的事务和用户定义的事务

是指在执行某些语句时,一条语句就是一个事务用户定义的事务

BEGINTRANSACTION:事务的开始标记。COMMITTRANSACTION:事务的结束标记。ROLLBACKTRANSACTION:回滚SAVETRANSACTION<保存点名>:设置保存点

ROLLBACKTRANSACTION<保存点名>:将事务回滚到保存点位置

系统提供的事务数据库的事务处理与数据恢复6.2.1并发操作引起的问题

对事务的并发执行如果不加以控制,可能会导致数据库中数据的不一致性。数据库的事务处理与数据恢复丢失修改(LostUpdate)不可重复读(UnrepeatableRead)读“脏”数据(DirtyRead)数据库的事务处理与数据恢复1.丢失修改(LostUpdate)调度时刻事务T1事务T2t1读A=16

t2

读A=16t3A=A-1写回A=15

t4

A=A-2写回A=14(覆盖了T1对A的修改)2.不可重复读(UnrepeatableRead)调度时刻事务T1事务T2t1读A=50读B=100求和=150

t2

读B=100B←B*2写回B=200t3读A=50读B=200求和=250(验算不对)

数据库的事务处理与数据恢复3.读“脏”数据(DirtyRead)调度时刻事务T1事务T2t1

读B=100B←B*2写回B=200t2读B=200(读入T2的脏数据)

t3

ROLLBACK(B恢复为100)产生上述三类数据不一致的主要原因是并发操作破坏了事务的隔离性数据库的事务处理与数据恢复6.2.2封锁数据库的事务处理与数据恢复

所谓封锁就是事务T在对某个数据对象,例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象

被封锁的数据对象的范围可大可小,可以是属性、元组,也可以是关系、数据库等,我们把封锁对象的大小称为封锁粒度

(1)排它锁:排它锁(X锁)又称为写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能读取和修改A,也不能再对A加任何类型的锁,直到T释放A上的锁.

(2)共享锁:共享锁。共享锁(S锁)又称为读锁,若事务T对数据对象A加上S锁,则事务T可以读A,但不能修改A;其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在事务T释放A上的S锁之前不能对A做任何修改

1.封锁的类型数据库的事务处理与数据恢复

所谓封锁协议就是在对数据库加锁、持锁和释放锁时所约定的一些规则。例如,应何时申请X锁或S锁、持锁时间、何时释放等。不同的封锁规则形成了不同的封锁协议,下面介绍三级封锁协议。(1)一级封锁协议。(2)二级封锁协议。(3)三级封锁协议。2.保证数据一致性的封锁协议——三级封锁协议数据库的事务处理与数据恢复

一级封锁协议是事务T在修改数据之前必须先对其加X锁,直到事务结束才释放。一级封锁协议一级封锁协议可有效防止丢失修改,并保证事务T是可恢复的数据库的事务处理与数据恢复

二级封锁协议是在一级封锁协议加上事务T对要读取的数据加S锁,读完后即可释放S锁二级封锁协议二级封锁协议除防止了丢失修改还可进一步防止读“脏”数据。数据库的事务处理与数据恢复

三级封锁协议是事务T在读取数据之前必须先对其加S锁,在要修改数据之前必须先对其加X锁,直到事务结束后才释放所有的锁三级封锁协议三级封锁协议解决了不可重复读问题数据库的事务处理与数据恢复封锁

协议X锁S锁不丢失

修改不读脏

数据可重

复读一级事务全程加锁不加锁√

二级事务全程加锁事务开始加锁,读完即释放√√

三级事务全程加锁事务全程加锁√√√表6-1不同级别的封锁协议数据库的事务处理与数据恢复6.2.3封锁出现的问题及解决方法

在多个事务请求对同一数据封锁时,总是使某一事务等待的情况称为活锁。1.活锁例如:如果事务T1封锁了数据R后,T2也请求封锁R,于是T2等待。接着T3也请求封锁R。假如T1释放R上的锁后,系统首先批准了T3的请求,T2只得继续等待。接着T4也请求封锁R,T3释放R上的锁后,系统又批准了T4的请求,……,T2有可能就这样永远等待下去。数据库的事务处理与数据恢复

多个并发事务处于相互等待的状态,其中的每一个事务都在等待它们中的另一个事务释放封锁,这样才可以继续执行下去,但任何一个事务都没有释放自己已获得的锁,也无法获得其他事务已拥有的锁,所以只好相互等待下去,这就产生了死锁。2.死锁数据库的事务处理与数据恢复一次封锁法:一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则该事务就不能继续执行

顺序封锁法:顺序封锁是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁

数据库的事务处理与数据恢复3.死锁的预防目前在数据库中解决死锁问题主要有两类方法:①采取一定措施来预防死锁的发生;②允许发生死锁,然后采用一定手段定期诊断系统中有无死锁,若有则解除之.(1)死锁的预防(2)死锁的检测与解除数据库系统中诊断死锁的方法是使用一个事务等待图,它动态地反映所有事务的等待情况。如图所示

数据库的事务处理与数据恢复6.2.4可串行化调度所谓的两段锁协议是指所有事务必须分两个阶段对数据项进行加锁和解锁。具体体现在:(1)在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁;(2)释放一个封锁之后,事务不再申请并获得对任何数据的封锁。为了保证并发操作的正确性,DBMS的并发控制机制必须提供一定的手段保证调度是可串行化的。两段锁(Two-PhaseLocking,简称2PL)协议就是保证并发调度可串行性的封锁协议。

数据库的事务处理与数据恢复6.2.5SQLServer的并发控制机制SQLServer具有多种锁,允许事务锁定不同的资源,并能自动使用与任务相对应的等级锁来锁定资源对象,以使锁的成本最小化.1.SQLServer的空间管理及锁的级别SQLServer为使事务锁定资源最小化提供了多种方法:行级锁页级锁簇级锁表级锁数据库级锁

数据库的事务处理与数据恢复2.SQLServer锁的类型SQLServer的基本锁是共享锁(S锁)和排它锁(X锁)。除基本锁之外,还有三种特殊锁:意向锁、修改锁和模式锁等

数据库的事务处理与数据恢复6.3数据库恢复6.3.1数据库系统的故障数据库运行过程中可能发生的故障主要有三类:事务故障、系统故障和介质故障

数据库的事务处理与数据恢复6.3.2数据库备份技术建立数据库备份最常用的技术是数据转储和登记日志文件

1.数据转储数据转储是指数据库管理员DBA定期或不定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程.数据转储有以下几类:根据转储时系统状态的不同,转储分为静态转储和动态转储.根据转储数据量的不同还可以将数据转储分为海量转储和增量转储

.数据库的事务处理与数据恢复2.日志文件

日志文件是用来记录事务对数据库的更新操作的文件。不同数据库采用的日志文件格式并不完全一样。概括起来日志文件主要有两种格式:以记录为单位的日志文件和以数据块为单位的日志文件(1)日志文件的格式和内容

以数据块为单位的日志文件的内容包括事务标识和更新的数据,只要某个数据块中有数据被更新,就要将整个块更新前和更新后的内容放入日志文件.数据库的事务处理与数据恢复对于以记录为单位的日志文件,日志文件中记录需要登记的内容包括:各个事务的开始(BEGINTRANSACTION)标记。事务标识(标明是哪个事务)。操作的类型(插入、删除或修改)。操作对象。更新前数据的旧值(对插入操作而言,此项为空值)。更新后数据的新值(对删除操作而言,此项为空值)。各个事务的结束(COMMIT或ROLLBACK)标记(2)登记日志文件

为保证数据库是可恢复的,登记日志文件时必须遵循两条原则:一是登记的次序严格按并行事务执行的时间次序;二是必须先写日志文件,后写数据库

数据库的事务处理与数据恢复6.3.3数据库恢复策略具体的恢复步骤为:(1)反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。(2)对该事务的更新操作执行逆操作。(3)重复执行(1)和(2),恢复该事务的其他更新操作,直至读到此事务的开始标记,事务故障恢复就完成了。1.事务故障的恢复数据库的事务处理与数据恢复具体的恢复步骤为:(1)正向扫描日志文件(即从头扫描日志文件),找出在故障发生前已经提交的事务(这些事务既有BERGINTRANSACTION记录,也有COMMIT记录),将其事务标识记入重做(REDO)队列。(2)对撤消队列中的各个事务进行撤消(UNDO)处理。(3)对重做队列中的各个事务进行重做(REDO)处理。2.系统故障的恢复数据库的事务处理与数据恢复3.介质故障的恢复介质故障是指磁盘上的物理数据和日志文件均遭破坏,这是最严重的一种故障。恢复方法是首先重装数据库,使数据库管理系统能正常运行,然后利用介质损坏前对数据库已做的备份恢复数据库。具体的恢复步骤为:(1)装入最新的后备数据库副本,使数据库恢复到最近一次转储时的一致性状态。(2)装入相应的日志文件副本(转储结束时刻的日志文件的副本),重做已完成的事务。数据库的事务处理与数据恢复6.3.4

SQLServer2005的数据备份和恢复1.SQLServer2005恢复模式(1)简单恢复模式:此模式使用数据库的完整或差异副本,且恢复会还原数据库到上一次进行备份的地方.(2)完整恢复模式:此模式使用数据库和全部日志信息的副本来还原数据库.(3)大容量日志恢复:在进行大批量操作时不是将所有每一项事务都记录到日志中,而只是对这些操作进行开始和结果等基础信息的记录.

简单恢复模式:由于截断事务日志,备份之后进行的更改会丢失.数据库的事务处理与数据恢复设置恢复模式

在对象资源管理器,展开“服务器对象”结点,选择要进行设置的数据库,右键单击,在弹出菜单中选择”属性”命令.打开如图所示对话框,选择”选项”标签.数据库的事务处理与数据恢复2.SQLServer2005备份类型

常见的备份类型有:完整备份,差异备份,事务日志备份,尾日志备份等

(1)完整备份:数据库完整备份包含所有数据文件和部分事务日志。完整备份与完成备份时的整个数据库相同,这一备份作为数据库恢复时的基线。

(2)差异备份:差异备份将备份上一次完整数据库备份之后被更改的数据库部分。(3)事务日志备份:记录了所有数据库的更改。当执行完整数据库备份时,通常需要进行事务日志备份.(4)尾日志备份:包含上一次未备份的日志部分(称为日志的“活动部分”)的事务日志备份。数据库的事务处理与数据恢复3.SQLServer2005备份策略(1)完全数据库备份策略:完全数据库备份策略是定期执行数据库的“完整备份”。(2)数据库和事务日志备份策略:即在数据库完整备份的基础上,增加事务日志备份,以记录全部数据库的变化(3)差异备份策略:差异备份策略包括执行常规的完整备份和差异备份,还可以在完整备份和差异备份之间执行事务日志备份

数据库的事务处理与数据恢复4.备份设备备份操作前就已创建好的备份文件称为“备份设备”

5.SQLServer

温馨提示

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

最新文档

评论

0/150

提交评论