版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第14章事务事务概念事务是构成逻辑工作单元的操作集合,它访问并可能更新数据库.在程序中界定如下,程序的执行即引起事务.begintransaction...endtransaction最高目标是保持数据库一致性.但有两个问题可能破坏一致性:各种故障,如硬件故障和系统崩溃多个事务的并发执行事务的ACID性质原子性(Atomicity):事务中的步骤必须作为单一的不可分割的单元执行,即要么完全执行,要么根本不执行.但在现实的执行过程中可能因各种故障而失败.这时如何确保原子性?一致性(Consistency):在单独执行时应保持数据库一致性.从一致的DB状态开始执行,结束时必须保证DB仍然处于一致的状态.但在事务执行过程中,DB可能暂时处于不一致状态.隔离性(Isolation):操作不应被并发执行的其他事务干扰.但在现实的执行过程中存在并发,事务的各个操作可能被分隔开.可能影响系统性能,因此可放宽隔离程度.耐久性(Durability):事务成功结束后,它对数据库所做的更新将不再受故障的影响.一个简单的事务模型真实事务的操作是各种SQL语句或宿主语言语句.简单事务模型只考虑单值数据,用变量名表示.只考虑数据在主存和磁盘之间的移动:read和write操作.read(X):将数据X从DB读入事务主存缓冲区中的变量Xwrite(X):将变量X的值从事务主存缓冲区写回DB暂时忽略插入删除等操作只考虑算术操作数据的更新是在主存中进行的,最大的问题是更新后的数据是否已经写入磁盘上的DB.不一定在更新后立即存盘!目前假设write是立即更新DB的.转账例从账户A
转$50到账户B:T: read(A)
A:=A–
50
write(A)
read(B)
B:=B+50
write(B)一致性:事务执行前后A与B之和保持不变.显然T满足此要求.这是程序员的责任.原子性:若在write(A)之后及write(B)之前发生故障,则DB处于不一致状态!即使不发生故障,这样的不一致状态在执行过程中同样存在.系统应确保这种不一致状态在DB系统中是不可见的.原子性要求要么不开始,要么完成.这就能保证不一致状态不可见.这是恢复系统的责任.转帐例(续)耐久性:一旦用户被告知事务已经完成($50转账已经发生),则系统必须保证即使再发生故障,这次转账的相关数据也不会丢失.也是恢复系统的责任.隔离性:若在write(A)与write(B)之间有另一事务读取并计算A+B,则会得到错误的总额.并发执行的多个正确事务(都能确保原子性和一致性)仍然可能导致不一致的状态!串行执行能避免这种情况.但性能差.受控制的并发能解决问题.这是并发控制系统的责任.存储结构易失性(Volatile)存储器:系统崩溃后不能幸存例如:主存,高速缓存非易失性(Nonvolatile)存储器:可以在系统崩溃后幸存例如:磁盘,磁带,闪存,非易失性RAM(电池供电)稳定(Stable)存储器:能够经受任何故障的存储器,内容永不丢失.理论上不存在,但可通过有关技术来无限逼近原子性,耐久性都依赖于稳定存储器.事务状态活动的(Active):初始状态;事务执行中.失败(Failed):发现不能继续正常执行之后.中止(Aborted):撤销事务对DB的所有改变(回滚),使DB恢复到事务开始前的状态.这就保证了原子性中止后系统可以选择重启或杀死该事务.部分提交(Partiallycommitted):最后一条语句执行之后.数据的改变可能仍在主存中接着向稳定存储器写入足够的信息以确保耐久性.提交(Committed):事务成功完成.这个状态必须具有耐久性.已提交的事务不能再中止.撤销其工作的唯一方法是编写并执行一个补偿事务.中止和提交都是可以接受的事务结束状态.事务状态(续)可见的外部写事务中可能执行可见的外部写操作,例如:向屏幕写数据发电子邮件ATM支付现金这些操作的结果处于DB系统控制之外,是不可撤销的为何需要并发提高吞吐量和资源利用率CPU活动和I/O活动可以并行进行(硬件支持).从而增加单位时间内执行的事务数目.资源空闲时间减少减少平均响应时间长短事务如果串行执行,短事务可能要等很长时间并发执行可以使排在后面的短事务提前执行并早早结束.而排在前面的长事务所增加的时间则可忽略.并发控制并发可能违背隔离性的要求,导致若干正确的事务在全局上不一致.必须控制事务之间的交互,以防止它们破坏数据库的一致性.调度调度
–
并发事务的指令按时间顺序执行形成的指令序列一组事务的一个调度:必须包括所有事务的所有指令必须保持各个事务内的指令顺序调度1T1
从A转账$50到B,T2从A转账余额的10%到B.下面是一个串行调度,先T1
后T2:
调度2另一串行调度,先T2
后T1调度3下列调度不是串行调度,但与调度1等价.
在调度1,2,3中,总和A+B都被保持不变调度4下面的并发调度没有保持(A+B)的值. 可串行化基本假设
–
每个事务都保持数据库的一致性.故一组事务的串行执行也保持数据库的一致性.一个(并发)调度是可串行化的,如果它与一个串行调度等价.不同形式的调度等价定义(冲突等价和观察等价)导致不同的可串行化概念:冲突可串行化观察可串行化接下去的讨论中只考虑read和write操作,从而调度只包含read与write指令.冲突指令事务Ti
和Tj的指令li
和lj
冲突当且仅当li和lj存取同一数据项Q,且两者中至少有一条write(Q)指令. 1.li=read(Q),lj=read(Q).li
与
lj
不冲突.
2.li=read(Q),lj=write(Q).冲突.
3.li=write(Q),lj=read(Q).冲突
4.li=write(Q),lj=write(Q).冲突冲突指令li
与lj
之间的(逻辑)时间顺序不得颠倒.因为颠倒之后产生的执行结果是不同的.如果li
与
lj
在一个调度中是相继的且不冲突,则即使交换其顺序也能保持相同结果.冲突可串行化若调度S
通过一系列非冲突指令的交换,转换成调度S',则称S与S'冲突等价.若调度S
与一个串行调度冲突等价,则称S是冲突可串行化的冲突可串行化(续)通过一系列交换非冲突指令,调度3可转换成调度6(串行调度<T1,T2>).因此调度3是冲突可串行化的.调度3调度6冲突可串行化(续)调度7:不是冲突可串行化的
无法通过交换指令而得到串行调度<T3,T4>或<T4,T3>.调度的优先图考虑事务集合T1,T2,...,Tn的某个调度优先图顶点是事务名;如果事务Ti
和Tj冲突,且Ti
较早存取发生冲突的数据项,就从Ti
到Tj
画一条边.可以在边上以存取的数据项作为标签.xy示例调度及优先图
T1 T2 T3 T4 T5
read(X)
read(Y)
read(Z)
read(V)
read(W)
read(W)
read(Y)
write(Y)
write(Z)
read(U)
read(Y)
write(Y)
read(Z)
write(Z)read(U)
write(U)T3T4T1T2检测冲突可串行化调度是冲突可串行化的当且仅当它的优先图没有圈.存在时间复杂度为n2
阶的圈检测算法,这里n是图中顶点个数.如果优先图是无圈的,则调度的串行化序可通过拓扑排序而得到.与优先图的偏序相容的一个线性序.例如优先图(a)的一个串行化序是
Ti
Tj
Tk
Tm可恢复调度可恢复调度:若事务Tj
读事务Ti先前写过的数据项,则Ti先于Tj提交.下列调度9不是可恢复的(假设T9
在读操作后提交)
如果T8
夭折,T9
则读了一个数据库的不一致状态(并可能将结果显示给了用户).级联回滚级联回滚:单个事务失败导致一系列事务回滚.考虑下列调度,其中没有事务已提交(因此该调度是可恢复的)
若T10
失败,T11
和T12
也必须回滚.导致大量工作的取消无级联回滚调度无级联回滚调度:不会发生级联回滚.对每一对事务Ti
与Tj,若Tj
读取Ti先前写过的数据项,则Ti
的提交操作必须出现在Tj的读操作之前.每个无级联回滚调度也是可恢复的调度.弱一致性级别某些应用更乐意处于弱一致性级别,即允许不是可串行化的调度例如一个希望得到所有帐户近似的总余额的只读事务例如用于查询优化的数据库统计信息的计算可以是近似的(为什么?)这样的事务不需要相对于其他事务是可串行化的精确性与性能的折中SQL中的隔离级别serializable
—
缺省级别repeatableread
—
只能读已提交记录,并且对同一记录的重复读必须返回相同值(即其间不允许其他事务更新该记录
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年全球链刮式刮泥机行业竞争态势分析
- 2026年秋季高考百日誓师大会 破釜沉舟搏一个无怨无悔
- 2026事业单位工勤技能-湖南-湖南食品检验工四级(中级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-湖南-湖南有线广播电视机务员二级(技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-湖南-湖南保育员三级(高级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-湖北-湖北水利机械运行维护工四级(中级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-浙江-浙江家禽饲养员二级(技师)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-新疆-新疆热力运行工二级(技师)历年参考题库含答案详解3套试卷
- 2026年11月小雪活动方案 小雪时节与冬季养生
- 2026年安全操作规程制度
- 2026邢台银行招聘笔试备考题库及答案详解
- 加盟合同不公平格式条款维权实务指南
- 高处施工作业风险防控专项方案
- 2025年成都七初锦城初一入学语文分班考试真题含答案
- 2026-2030中国DJ设备行业市场发展趋势与前景展望战略分析研究报告
- 2026年电子商务投资合作合同模板(风险共担)
- 2026中国机场助航灯光系统节能改造市场潜力与投资价值评估
- 2026年广西专业技术人员继续教育公需科目试题(附答案)
- 2026年高考语文真题全国一卷文言文逐句注解+翻译(含课内拓展+文言现象)
- 煤矿重大事故隐患判定标准2026版解读
- 2026版《中华人民共和国行政复议法实施条例》培训课件
评论
0/150
提交评论