数据库保护学习.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据库保护学习.pptx》由会员分享,可在线阅读,更多相关《数据库保护学习.pptx(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、事务概念事务定义事务是由一系列操作序列构成的程序执行单元,这些操作要么都做,要么都不做,是一个不可分割的工作单位。例如银行转帐。SQL中事务的定义事务以Begin transaction开始,以Commit work或 Rollback work结束。Commit work表示提交,事务正常结束。Rollback work表示事务非正常结束,撤消事务已做的操作,回滚到事务开始时状态。第1页/共58页事务概念示例银行转帐:事务T从A帐户过户50¥到B帐户。T:read(A);A:=A 50;write(A);read(B);B:=B+50;write(B);read(X):从数据库传送数据项X到
2、事务的工作区中。write(X):从事务的工作区中将数据项X写回数据库。第2页/共58页事务概念事务特性(ACID)原子性(Atomicity)事务中包含的所有操作要么全做,要么全不做。原子性由恢复机制实现。一致性(Consistency)事务的隔离执行必须保证数据库的一致性。事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态。数据库的一致性状态由用户来负责。如银行转帐,转帐前后两个帐户金额之和应保持不变(意大利香肠)。第3页/共58页事务概念隔离性(Isolation)系统必须保证事务不受其它并发执行事务的影响。对任何一对事务T1,T2,在T1看来,T2要么在T1开始
3、之前已经结束,要么在T1完成之后再开始执行。隔离性通过并发控制机制实现。持久性(Durability)一个事务一旦提交之后,它对数据库的影响必须是永久的。系统发生故障不能改变事务的持久性。持久性通过恢复机制实现。第4页/共58页事务状态活动状态活动状态失败状态失败状态部分部分提交状态提交状态提交状态提交状态中止状态中止状态初始状态初始状态事务无法继事务无法继续正常执行续正常执行事务回滚,数据库恢事务回滚,数据库恢复到事务开始前状态复到事务开始前状态最后一条语最后一条语句被执行后句被执行后成功完成,永成功完成,永久写入数据库久写入数据库第5页/共58页并发执行并行 Vs 串行基本比较并行事务会破
4、坏数据库的一致性。串行事务效率低。并行的优点一个事务由不同的步骤组成,所涉及的系统资源也不同。这些步骤可以并发执行,以提高系统的吞吐量。系统中存在着周期不等的各种事务,串行会导致难于预测的时延。如果各个事务所涉及的是数据库的不同部分,采用并发会减少平均响应时间。第6页/共58页并发执行核心问题在保证一致性的前提下最大限度地提高并发度。事务执行示例T1:read(A);A:=A 50;write(A);read(B);B:=B+50;write(B);T2:read(A);temp:=A0.1 A:=A temp;write(A);read(B);B:=B+temp;write(B);从A过户5
5、0¥到B从A过户存款的10%到B开始状态:A=1000¥B=2000¥A+B=3000¥第7页/共58页并发执行 read(A);A:=A 50;write(A);read(B);B:=B+50;write(B);read(A);temp:=A0.1 A:=A temp;write(A);read(B);B:=B+temp;write(B);T1T2A=950¥B=2050¥结束状态:A=855¥B=2145¥A+B=3000¥串串行行调调度度1 1第8页/共58页并发执行 read(A);A:=A 50;write(A);read(B);B:=B+50;write(B);read(A);te
6、mp:=A0.1 A:=A temp;write(A);read(B);B:=B+temp;write(B);T1T2A=900¥B=2100¥结束状态:A=850¥B=2150¥A+B=3000¥串串行行调调度度2 2第9页/共58页并发执行事务的调度事务的执行顺序称为一个调度,表示事务的指令在系统中执行的时间顺序。一组事务的调度必须保证包含了所有事务的操作指令一个事务中指令的顺序必须保持不变。串行调度在串行调度中,属于同一事务的指令紧挨在一起。对于有n个事务的事务组,可以有n!个有效调度。并行调度在并行调度中,来自不同事务的指令可以交叉执行。当并行调度等价于某个串行调度时,则称它是正确的。
7、第10页/共58页并发执行 read(A);A:=A 50;write(A);read(B);B:=B+temp;write(B);T1T2A=950¥B=2000¥结束状态:A=855¥B=2145¥A+B=3000¥read(B);B:=B+50;write(B);read(A);temp:=A0.1 A:=A temp;write(A);A=855¥B=2000¥A=855¥B=2050¥并并行行调调度度3第11页/共58页并发执行 read(A);A:=A 50;B:=B+temp;write(B);T1T2A=1000¥B=2000¥结束状态:A=950¥B=2100¥A+B=305
8、0¥write(A);read(B);B:=B+50;write(B);read(A);temp:=A0.1 A:=A temp;write(A);read(B);A=900¥B=2000¥A=950¥B=2000¥A=950¥B=2050¥并并行行调调度度4第12页/共58页并发执行SQL中一致性级别的定义serializable:一个调度的执行必须等价于一个串行调度的结果。repeatable read:只允许读取已提交的记录,并要求一个事务对同一记录的两次读取之间,其它事务不能对该记录进行更新。read committed:只允许读取已提交的记录,但不要求可重复读。read uncomm
9、itted:允许读取未提交的记录。第13页/共58页并发执行read(A);A1:=A;read(B);B1:=B;A1+B1=2950;read(B);B:=B+50;write(B);T1T2A=1000¥B=2000¥read(A);A:=A 50;write(A);读读脏脏数数据据第14页/共58页并发执行 read(A);A1:=AT1T2A=1000¥B=2000¥read(A);A:=A 50;write(A);read(B);B:=B+50;write(B);不不能能重重复复读读read(B);B1:=BA1+B1=3050A=950¥B=2050¥第15页/共58页并发执行s
10、elect*from SCwhere CNO=C01 and SNO=S01T1T2发生幻象insert into SC values(S01,C01,null)第16页/共58页可恢复性事务的恢复:一个事务失败了,应该能够撤消该事务对数据库的影响。如果有其它事务读取了失败事务写入的数据,则该事务也应该撤消。可恢复调度read(A);write(A);T1T2read(B);commit;read(A);commit不可恢复的调度不可恢复的调度可恢复调度:可恢复调度:对于每对事务对于每对事务T1T1与与T2T2,如果如果T2T2读取了读取了T1T1所写的数所写的数据,则据,则T1T1必须先于必
11、须先于T2T2提交提交第17页/共58页可恢复性无级联调度read(A);read(B);write(A);T1T2read(A)write(A);级联调度:级联调度:由于一个事务故障而由于一个事务故障而导致一系列事务回滚导致一系列事务回滚无级联调度:无级联调度:对于每对事务对于每对事务T1T1与与T2T2,如果如果T2T2读取了读取了T1T1所写的所写的数据,则数据,则T1T1必须在必须在T2T2读读取之前提交取之前提交T2read(A)无级联调度必是可恢复调度无级联调度必是可恢复调度第18页/共58页可串行化如何判定并行调度与一个串行调度等价?冲突指令指令的顺序考虑一个调度S中的两条连续指
12、令(仅限于read与 write操作)Ii与Ij,分别属于事务Ti与Tj,Ii=read(Q),Ij=read(Q)Ii=read(Q),Ij=write(Q)Ii=write(Q),Ij=read(Q);Ii=write(Q),Ij=write(Q);在 情况下,Ii与Ij的次序无关紧要。其余情况下,Ii与Ij的次序不同,其执行结果也不同,数据库最终状态也不同。第19页/共58页可串行化冲突指令当两条指令是不同事务在相同数据项上的操作,并且其中至少有一个是write指令时,则称这两条指令是冲突的。如在、情况下,Ii与Ij 是冲突的。非冲突指令交换次序不会影响调度的最终结果。冲突等价如果调度S
13、可以经过一系列非冲突指令交换转换成调度S,则称调度S与S是冲突等价的。第20页/共58页可串行化read(A);write(A);read(B);write(B);T1T2read(B);write(B);并并行行调调度度3read(A);write(A);read(A);write(A);read(B);write(B);T1T2write(B);read(A);write(A);read(B);read(A);write(A);read(B);write(B);write(B);read(A);write(A);read(B);read(A);write(A);read(B);write(
14、B);write(B);read(A);write(A);read(B);第21页/共58页可串行化冲突可串行化当一个调度S与一个串行调度冲突等价时,则称该调度是冲突可串行化的。如并行调度3是冲突可串行化的。read(A);T1T2write(A);write(A);非冲突串行化的例子:存在结果相同,但非冲突等价的调度。第22页/共58页可串行化read(A);A:=A-50write(A);T1T2冲突指令冲突指令T1T2read(B);B:=B-10write(B);read(B);B:=B+50write(B);read(A);A:=A+10write(A);read(A);A:=A-5
15、0write(A);read(B);B:=B+50write(B);read(B);B:=B-10write(B);read(A);A:=A+10write(A);A=950¥B=2000¥A=950¥B=1990¥A=950¥B=2040¥A=960¥B=2040¥A=960¥B=2040¥A=950¥B=2050¥第23页/共58页可串行化视图可串行化考虑关于某个事务集的两个调度S,S,若调度S,S满足以下条件,则称它们是视图等价的:对于每个数据项Q,若事务Ti在调度S中读取了Q的初始值,那么Ti在调度S中也必须读取Q的初始值。对于每个数据项Q,若事务Ti在调度S中执行了read(Q),并
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 保护 学习
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内