上海交通大学高级数据库课件陆朝俊ed6ch14_第1页
上海交通大学高级数据库课件陆朝俊ed6ch14_第2页
上海交通大学高级数据库课件陆朝俊ed6ch14_第3页
上海交通大学高级数据库课件陆朝俊ed6ch14_第4页
上海交通大学高级数据库课件陆朝俊ed6ch14_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、15.2n事务事务是构成逻辑工作单元的操作集合,它访问并可能更新数据库.l在程序中界定如下,程序的执行即引起事务.begin transaction.end transactionn最高目标是保持数据库一致性.但有两个问题可能破坏一致性:l各种故障, 如硬件故障和系统崩溃l多个事务的并发执行15.3n原子性原子性(Atomicity):事务中的步骤必须作为单一的不可分割的单元执行,即要么完全执行,要么根本不执行.l但在现实的执行过程中可能因各种故障而失败.这时如何确保原子性?n一致性一致性(Consistency):在单独执行时应保持数据库一致性.l从一致的DB状态开始执行,结束时必须保证DB

2、仍然处于一致的状态.l但在事务执行过程中,DB可能暂时处于不一致状态.n隔离性隔离性(Isolation):操作不应被并发执行的其他事务干扰.l但在现实的执行过程中存在并发,事务的各个操作可能被分隔开.l可能影响系统性能,因此可放宽隔离程度.n耐久性耐久性(Durability):事务成功结束后,它对数据库所做的更新将不再受故障的影响.15.4n真实事务的操作是各种SQL语句或宿主语言语句.n简单事务模型l只考虑单值数据,用变量名表示.l只考虑数据在主存和磁盘之间的移动:read和write操作.4read(X):将数据X从DB读入事务主存缓冲区中的变量X4write(X):将变量X的值从事务

3、主存缓冲区写回DB4暂时忽略插入删除等操作l只考虑算术操作n数据的更新是在主存中进行的,最大的问题是更新后的数据是否已经写入磁盘上的DB.l不一定在更新后立即存盘!l目前假设write是立即更新DB的.15.5n从账户A 转 $50到账户B :T: read(A)A := A 50write(A)read(B)B := B + 50write(B)n一致性:事务执行前后A与B之和保持不变.显然T满足此要求.l这是程序员的责任.n原子性:若在write(A)之后及write(B)之前发生故障,则DB处于不一致状态!l即使不发生故障,这样的不一致状态在执行过程中同样存在.l系统应确保这种不一致状态

4、在DB系统中是不可见的.l原子性要求要么不开始,要么完成.这就能保证不一致状态不可见.l这是恢复系统的责任.15.6n耐久性:一旦用户被告知事务已经完成($50转账已经发生),则系统必须保证即使再发生故障,这次转账的相关数据也不会丢失.l也是恢复系统的责任.n隔离性:若在write(A)与write(B)之间有另一事务读取并计算A+B,则会得到错误的总额.l并发执行的多个正确事务(都能确保原子性和一致性)仍然可能导致不一致的状态!l串行执行能避免这种情况.但性能差.l受控制的并发能解决问题.这是并发控制系统的责任.15.7n易失性易失性(Volatile)存储器存储器:l系统崩溃后不能幸存l例

5、如: 主存, 高速缓存n非易失性非易失性(Nonvolatile)存储器存储器:l可以在系统崩溃后幸存l例如: 磁盘, 磁带, 闪存, 非易失性RAM (电池供电) n稳定稳定(Stable)存储器存储器:l能够经受任何故障的存储器, 内容永不丢失.l理论上不存在,但可通过有关技术来无限逼近l原子性,耐久性都依赖于稳定存储器.15.8n活动的活动的(Active):初始状态;事务执行中.n失败失败(Failed):发现不能继续正常执行之后.n中止中止(Aborted):撤销事务对DB的所有改变(回滚),使DB恢复到事务开始前的状态.l这就保证了原子性l中止后系统可以选择重启或杀死该事务.n部分

6、提交部分提交(Partially committed):最后一条语句执行之后.l数据的改变可能仍在主存中l接着向稳定存储器写入足够的信息以确保耐久性.n提交提交(Committed):事务成功完成.l这个状态必须具有耐久性.l已提交的事务不能再中止.撤销其工作的唯一方法是编写并执行一个补偿事务.l中止和提交都是可以接受的事务结束状态.15.915.10n事务中可能执行可见的外部写操作,例如:l向屏幕写数据l发电子邮件lATM支付现金n这些操作的结果处于DB系统控制之外,是不可撤销的15.11n提高吞吐量和资源利用率lCPU活动和I/O活动可以并行进行(硬件支持).4从而增加单位时间内执行的事务

7、数目.4资源空闲时间减少n减少平均响应时间l长短事务如果串行执行,短事务可能要等很长时间l并发执行可以使排在后面的短事务提前执行并早早结束.而排在前面的长事务所增加的时间则可忽略.15.12n并发可能违背隔离性的要求,导致若干正确的事务在全局上不一致.n必须控制事务之间的交互,以防止它们破坏数据库的一致性.15.13n调度调度 并发事务的指令按时间顺序执行形成的指令序列l一组事务的一个调度:4必须包括所有事务的所有指令4必须保持各个事务内的指令顺序15.14nT1 从A 转账$50到B, T2 从A 转账余额的10%到B.n下面是一个串行调度, 先T1 后T2 :15.15 另一串行调度, 先

8、T2 后T115.16n下列调度不是串行调度, 但与调度1等价等价.在调度1, 2, 3中, 总和A + B都被保持不变15.17n下面的并发调度没有保持(A + B )的值.15.18n基本假设基本假设 每个事务都保持数据库的一致性.故一组事务的串行执行也保持数据库的一致性.n一个(并发)调度是可串行化可串行化的, 如果它与一个串行调度等价.n不同形式的调度等价定义(冲突等价和观察等价)导致不同的可串行化概念:l冲突可串行化l观察可串行化n接下去的讨论中只考虑read和write操作,从而调度只包含 read与write指令.15.19n事务Ti 和Tj的指令li 和lj 冲突冲突当且仅当l

9、i和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). 冲突n冲突指令li 与lj 之间的(逻辑)时间顺序不得颠倒.因为颠倒之后产生的执行结果是不同的. n如果 li 与 lj 在一个调度中是相继的且不冲突, 则即使交换其顺序也能保持相同结果.15.20n若调度S 通过一系列非冲突指令的交换,转换成

10、调度S, 则称S与S冲突等价冲突等价.n若调度S 与一个串行调度冲突等价, 则称S是冲突可串行化的冲突可串行化的15.21n通过一系列交换非冲突指令, 调度3 可转换成调度6(串行调度). l因此调度3是冲突可串行化的.调度3调度 615.22n调度7:不是冲突可串行化的l无法通过交换指令而得到串行调度或.15.23n考虑事务集合T1, T2, ., Tn的某个调度n优先图优先图l顶点是事务名;l如果事务Ti 和Tj 冲突,且Ti 较早存取发生冲突的数据项,就从Ti 到Tj 画一条边.n可以在边上以存取的数据项作为标签.xy15.24T1 T2 T3 T4 T5read(X)read(Y)re

11、ad(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)T3T4T1T215.25n调度是冲突可串行化的当且仅当它的优先图没有圈.l存在时间复杂度为n2 阶的圈检测算法, 这里n 是图中顶点个数. n如果优先图是无圈的, 则调度的串行化序可通过拓扑排序而得到. l与优先图的偏序相容的一个线性序.l例如优先图(a)的一个串行化序是Ti Tj Tk Tm15.26n可恢复调度可恢复调度:若事务Tj 读事务Ti 先前写过的数据项, 则Ti先于Tj 提交.n

12、下列调度9不是可恢复的(假设T9 在读操作后提交)n如果T8 夭折, T9 则读了一个数据库的不一致状态(并可能将结果显示给了用户). 15.27n级联回滚级联回滚:单个事务失败导致一系列事务回滚.l考虑下列调度, 其中没有事务已提交 (因此该调度是可恢复的)若T10 失败, T11 和T12 也必须回滚.n导致大量工作的取消15.28n无级联回滚调度无级联回滚调度:不会发生级联回滚.n对每一对事务Ti 与Tj , 若Tj 读取Ti 先前写过的数据项, 则Ti 的提交操作必须出现在Tj 的读操作之前.n每个无级联回滚调度也是可恢复的调度.15.29n某些应用更乐意处于弱一致性级别, 即允许不是可串行化的调度l例如一个希望得到所有帐户近似的总余额的只读事务l例如用于查询优化的数据库统计信息的计算可以是近似的(为什么?)l这样的事务不需要相对于其他事务是可串行化的n精确性与性能的折中15.30nserializable 缺省级别nrepeatable read 只能读已提交记录, 并且对同一记录的重复读必须返回相同值(即其间不允许其他事务更新该记录).

温馨提示

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

评论

0/150

提交评论