《系统实现技术》PPT课件.ppt
《《系统实现技术》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《系统实现技术》PPT课件.ppt(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章第八章 系统实现技术系统实现技术 事务和锁事务和锁本章重要概念本章重要概念 (1)事务的定义,COMMIT和ROLLBACK的语义,事务的ACID性质,事务的状态变迁图。(2)存储器类型,稳定存储器的实现,数据传送过程。(3)恢复的定义、基本原则和实现方法,故障的类型,检查点技术,REDO和UNDO操作,运行记录优先原则。(4)并发操作带来的三个问题,X锁、S锁、使用X锁和S锁的操作,封锁协议,活锁、饿死和死锁,并发调度、串行调度、并发调度的可串行化,SQL中事务的存取模式和隔离级别,基于时标的并发控制。第第8章章 系统实现技术系统实现技术8.1 事务8.2 数据库的恢复8.3 数据库的
2、并发控制8.1 8.1 事务事务8.1.1 事务的定义 8.1.2 事务的ACID性质 为什么需要事务为什么需要事务8.1-18.1-1例如,银行转帐问题:例如,银行转帐问题:假定资金从帐户假定资金从帐户A A转到帐户转到帐户B B,至少需要两步:,至少需要两步:帐户帐户A A的资金减少的资金减少然后帐户然后帐户B B的资金相应增加的资金相应增加银行转帐帐户帐户A帐户帐户B为什么需要事务为什么需要事务8.1-28.1-2CREATE TABLE bank(customerName CHAR(10),-顾客姓名 currentMoney MONEY -当前余额)GOALTER TABLE ban
3、k ADD CONSTRAINT CK_currentMoney CHECK(currentMoney=1)GOINSERT INTO bank(customerName,currentMoney)VALUES(张三,1000)INSERT INTO bank(customerName,currentMoney)VALUES(李四,1)创建帐户表,存放用户的帐户信息添加约束:根据银行规定,帐户余额不能少于1元,否则视为销户 张三开户,开户金额为1000元;李四开户,开户金额1元 为什么需要事务为什么需要事务8.1-38.1-3目前两个帐户的余额总和为:目前两个帐户的余额总和为:1000+1=1
4、001元元 为什么需要事务为什么需要事务8.1-48.1-4模拟实现转帐:从张三的帐户转帐从张三的帐户转帐1000元到李四的帐户元到李四的帐户/*-转帐测试:张三转账1000元给李四-*/-我们可能会这样这样编写语句-张三的帐户少1000元,李四的帐户多1000元UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName=张三UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=李四GO-再次查看转帐后的结果。SELECT*FROM bankGO
5、请问:执行转帐语句后,张三、李四的帐户余额为多少?l张三的帐户没有减少 l但李四的帐户却多了1000元 l100010012001元 总额多出了1000元!为什么需要事务为什么需要事务8.1-58.1-5-张三的帐户减少1000元,李四的帐户增加1000元UPDATE bank SET currentMoney=currentMoney-1000 WHERE customerName=张三UPDATE bank SET currentMoney=currentMoney+1000 WHERE customerName=李四GO错误原因分析:错误原因分析:UPDATE语句违反约束:余额=1元执行
6、失败,所以张三还是执行失败,所以张三还是1000元元继续往下执行继续往下执行:执行成功,所以李四变为:执行成功,所以李四变为1001元元如何解决呢?使用如何解决呢?使用事务事务 事务的定义事务的定义(1)(1)定定义义8.1 8.1 事事务务(transactiontransaction)是是构构成成单单一一逻逻辑辑工工作作单单元元的的操操作作集集合合,要要么么完完整整地地执执行行,要要么么完完全全不不执执行行。不不论论发发生生何种情况,何种情况,DBSDBS必须保证事务能正确、完整地执行。必须保证事务能正确、完整地执行。在在程程序序中中,事事务务以以BEGIN BEGIN TRANSACTI
7、ONTRANSACTION语语句句开开始始,以以COMMITCOMMIT语句或语句或ROLLBACKROLLBACK语句结束。语句结束。COMMITCOMMIT语语句句表表示示事事务务执执行行成成功功地地结结束束(提提交交),此此时时告告诉诉系系统统,数数据据库库要要进进入入一一个个新新的的正正确确状状态态,该该事事务务对对数据库的所有更新都已交付实施(写入磁盘)。数据库的所有更新都已交付实施(写入磁盘)。ROLLBACKROLLBACK语语句句表表示示事事务务执执行行不不成成功功地地结结束束(应应该该“回回退退”),此此时时告告诉诉系系统统,已已发发生生错错误误,数数据据库库可可能能处处在在
8、不不正正确确的的状状态态,该该事事务务对对数数据据库库的的所所有有更更新新必必须须被被撤撤消消,数据库应恢复该事务到初始状态。数据库应恢复该事务到初始状态。用户定义的一个对数据库读写操作序列用户定义的一个对数据库读写操作序列一个一个不可分割不可分割的工作单位的工作单位数据库恢复和并发控制的基本单位数据库恢复和并发控制的基本单位数据库系统中通常有多个事务并行运行数据库系统中通常有多个事务并行运行v事务和程序比较事务和程序比较在关系数据库中,一个事务可以是一条或多条在关系数据库中,一个事务可以是一条或多条SQL语句语句,也可以包含一个或多个程序。也可以包含一个或多个程序。一个程序通常包含多个事务一
9、个程序通常包含多个事务转帐过程就是一个事务。它需要两条UPDATE语句来完成,这两条语句是一个整体,如果其中任一条出现错误,则整个转帐业务也应取消,两个帐户中的余额应恢复到原来的数据,从而确保转帐前和转帐后的余额不变,即都是1001元。事务的定义事务的定义(2)(2)事务的定义事务的定义(3)(3)例例8.1 8.1 设银行行数数据据库中中有有一一转账事事务T T,从从账 号号 A A转 一一 笔笔 款款 子子($50$50)到到账号号B B,其其操操作如下:作如下:T T:readread(A A););A:=AA:=A5050;writewrite(A A););readread(B B)
10、;);B:=B+50B:=B+50;writewrite(B B).n组织组织成成如下如下事事务务:T T:BEGIN BEGIN RANSACTIONRANSACTION;readread(A A););A:=A-50A:=A-50;writewrite(A A););if(Aif(A0)ROLLBACK0)ROLLBACK;else readelse read(B B););B:=B+50B:=B+50;writewrite(B B););COMMITCOMMIT;事务的定义事务的定义(4)(4)对数据库的访问是建立在读和写两个操作的基础上的:对数据库的访问是建立在读和写两个操作的基础上的
11、:ureadread(X X):把把数数据据X X,从从磁磁盘盘的的数数据据库库中中读读到到内内存的缓冲区中。存的缓冲区中。uwritewrite(X X):把把数数据据X X,从从内内存存缓缓冲冲区区中中写写回回磁磁盘盘的数据库。的数据库。在在系系统统运运行行时时,writewrite操操作作未未必必导导致致数数据据立立即即写写回回磁磁盘盘,很很可可能能先先暂暂存存在在内内存存缓缓冲冲区区中中,稍稍后后再再写写回回磁盘。这件事情是磁盘。这件事情是DBMSDBMS实现时必须注意的问题。实现时必须注意的问题。事务的事务的ACIDACID性质性质性质:v原子性原子性(Atomicity):事务事务
12、是一个不可分割的工作是一个不可分割的工作单元,单元,事务中的操作要么都做,要事务中的操作要么都做,要么都不做么都不做 (All or None)(All or None)v一致性一致性(Consistency):即即数据不会应事务的执行而遭受破坏数据不会应事务的执行而遭受破坏。事务执行的结果必须使事务执行的结果必须使数据库从数据库从一个一致性状态一个一致性状态变到变到另一个一致性状态。另一个一致性状态。与原子性与原子性密切相关。密切相关。v隔离性隔离性(Isolation):在在多个事务并发执行时,系统应保证与这些事务先后单独执行多个事务并发执行时,系统应保证与这些事务先后单独执行时的结果一样
13、。时的结果一样。v持久性持久性(Durability):一一个事务一旦完成全部操作后,它对数据库的所有更新应永久个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映在数据库中。地反映在数据库中。8.2 8.2 数据库的恢复数据库的恢复8.2.1 8.2.1 存储器结构存储器结构 8.2.2 8.2.2 恢复的基本原则和实现方法恢复的基本原则和实现方法8.2.3 8.2.3 故障类型和恢复方法故障类型和恢复方法8.2.4 8.2.4 检查点技术检查点技术8.2.5 SQL8.2.5 SQL对事务的支持对事务的支持 8.2.1 8.2.1 存储器结构存储器结构(1)(1)1.1.存储器类型存
14、储器类型p易失性存储器(易失性存储器(volatile storagevolatile storage)内存内存、cachecache存储器存储器 p非易失性存储器(非易失性存储器(nonvolatile storagenonvolatile storage)磁盘磁盘和磁带和磁带 p稳定存储器(稳定存储器(stable storagestable storage)这是一个理论上的概念。存储在稳定存储器中的信息是决不会这是一个理论上的概念。存储在稳定存储器中的信息是决不会丢失的。丢失的。2 2.稳定存储器稳定存储器的实现的实现p数据备份数据备份 p数据银行数据银行 8.2.1 8.2.1 存储器
15、结构存储器结构(2)(2)3.数据数据访问p块、物理块和缓冲块、物理块和缓冲块块p块块的操作的操作inputinput(A A):把把物物理理块A A的的内内容容传送送到到内内存存的的缓冲冲块中。中。OutputOutput(B B):把:把缓冲冲块B B的的内容内容传送到磁送到磁盘中恰当的中恰当的物理物理块中中 B内存内存AB磁盘磁盘input(A)output(B)图图8.2 块操作块操作8.2.1 8.2.1 存储器结构存储器结构(3)(3)xiwrite(X)包含包含x的块的块Bx存在,存在,read(X)事务事务系统系统开开始始请求请求read(X)事务工作区事务工作区分配分配X磁盘
16、缓冲区磁盘缓冲区扫描内存扫描内存磁盘磁盘包含包含x的块的块Bx存在,存在,input(B)8.2.1 8.2.1 存储器结构存储器结构(4)(4)银行转账系统银行转账系统A=2000 B=1000事务事务A=A-100B=B+100output(Aoutput(A)output(Boutput(B)断电或其断电或其断电或其断电或其他故障他故障他故障他故障假假设设没没有有事事务务的的原原子子性性,那那么么重重新新启启动动事事务务时时,要要么么A A因因为为再再执执行行一一遍遍而而为为18001800,要要么么B B因因从从未未执执行行而而保保持原值。持原值。4.恢复和原子性的联系恢复和原子性的联
17、系恢复的基本原则和实现方法恢复的基本原则和实现方法u基本原则基本原则 :“冗余冗余”,即数据库重复存储。,即数据库重复存储。u具体实现方法具体实现方法 平平时做好两件事:做好两件事:转储和建立日志和建立日志周期地(比如一天一次)周期地(比如一天一次)对整个数据整个数据库进行拷行拷贝,转储到另一个磁到另一个磁盘或磁或磁带一一类存存储介介质中。中。建立日志数据建立日志数据库。记录事事务的开始、的开始、结束及数据每一次束及数据每一次插入、插入、删除和修改前后的除和修改前后的值,并写到,并写到“日志日志”库中。中。一旦一旦发生数据生数据库故障,分两种情况故障,分两种情况进行行处理理 如果数据如果数据库
18、已被破坏,已被破坏,则装入装入lastlast数据数据库备份,再利用份,再利用日志日志库将将这两个数据两个数据库状状态之之间的所有更新重新做一遍。的所有更新重新做一遍。如果数据如果数据库未被破坏,但某些数据不可靠,未被破坏,但某些数据不可靠,则撤消所有撤消所有不可靠的修改,把数据不可靠的修改,把数据库恢复到正确的状恢复到正确的状态。8.2.3 8.2.3 故障类型和恢复方法故障类型和恢复方法(1)(1)1.1.事务故障事务故障可以可以预期的事期的事务故障,如存款余故障,如存款余额透支等透支等非非预期事期事务故障,如运算溢出、数据故障,如运算溢出、数据错误、死、死锁等等2.2.系统故障:硬件故障
19、、软件错误或掉电等系统故障:硬件故障、软件错误或掉电等,重重新启动时,具体处理分两种情况考虑。新启动时,具体处理分两种情况考虑。对未完成事未完成事务作作UNDOUNDO处理;理;对已提交事已提交事务但更新但更新还留在留在缓冲区的事冲区的事务进行行REDOREDO处理。理。8.2.3 8.2.3 故障类型和恢复方法故障类型和恢复方法(2)(2)3 3介质故障介质故障在在发生生介介质故故障障和和遭遭受受病病毒毒破破坏坏时,磁磁盘上上的的物物理理数数据据库遭遭到到毁灭性性破破坏坏。此此时恢恢复复的的过程如下:程如下:p重重装装最最近近转储的的后后备副副本本到到新新的的磁磁盘,使使数数据据库恢复到恢复
20、到转储时的一致状的一致状态。p在在日志中找出最近日志中找出最近转储以后所有已提交的事以后所有已提交的事务。p对这些些已已提提交交的的事事务进行行REDOREDO处理理,将将数数据据库恢复到故障前某一恢复到故障前某一时刻的一致状刻的一致状态。在在实际中中,系系统故故障障通通常常称称为软故故障障(Soft(Soft Crash)Crash),介介质故故障障通通常常称称为硬硬故故障障(Hard(Hard Crash)Crash)。8.2.4 8.2.4 检查点技术检查点技术(1)(1)1 1检查点方法检查点方法 在在DBSDBS运运行行时,DBMSDBMS定定时设置置检查点点。在在检查点点时刻刻才才
21、真真正正做做到到把把对DBDB的的修修改改写写到到磁磁盘,并并在在日日志志文文件件写写入入一一条条检查点点记录(以以便便恢恢复复时使使用用)。当当DBDB需需要要恢恢复复时,只只有有那那些些在在检查点点后后面的事面的事务需要恢复。需要恢复。事务事务T1T1不必恢复;不必恢复;事务事务T2T2和事务和事务T4T4必须重做必须重做(REDO)(REDO);事务事务T3T3和事务和事务T5T5必须撤消必须撤消(UNDO)(UNDO)。事务事务检查点检查点故障点故障点t检查点检查点T1T1T3T3T2T2T5T5T4T48.2.4 8.2.4 检查点技术检查点技术(2)(2)2 2检查点方法的恢复算法
22、:分成两步。检查点方法的恢复算法:分成两步。(1 1)根根据据日日志志文文件件建建立立事事务重重做做队列列和和事事务撤撤销队列列。此。此时,从,从头扫描日志文件(正向描日志文件(正向扫描)。描)。(2 2)对重重做做队列列中中的的事事务进行行REDOREDO处理理,对撤撤销队列列中的事中的事务进行行UNDOUNDO处理。理。p进进行行REDOREDO处处理理的的方方法法是是:正正向向扫扫描描日日志志文文件件,根根据据重重做做队队列列的的记记录录对对每每一一个个重重做做事事务务重重新新实实施施对对数数据库的更新操作。据库的更新操作。p进进行行UNDOUNDO处处理理的的方方法法是是:反反向向扫扫
23、描描日日志志文文件件,根根据据撤撤销销队队列列的的记记录录对对每每一一个个撤撤销销事事务务的的更更新新操操作作执执行逆操作。行逆操作。8.2.5 SQL8.2.5 SQL对事务的支持对事务的支持无无begin transactionCommitRollback8.3 数据数据库库的并的并发发控制控制8.3.1 8.3.1 并发操作带来的三个问题并发操作带来的三个问题8.3.2 8.3.2 封锁技术封锁技术8.3.3 8.3.3 封锁带来的问题封锁带来的问题8.3.4 8.3.4 并发操作的调度并发操作的调度8.3.5 SQL8.3.5 SQL对事务处理的支持对事务处理的支持并发操作带来的三个问
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统实现技术 系统 实现 技术 PPT 课件
限制150内