第9章 SQL中的事务_第1页
第9章 SQL中的事务_第2页
第9章 SQL中的事务_第3页
第9章 SQL中的事务_第4页
第9章 SQL中的事务_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

1、12345用户用户1发现座位空发现座位空 用户用户2发现座位空发现座位空 用户用户1占用占用 用户用户2占用占用 不同用户占用同一座位不同用户占用同一座位 不同用户在不同售票点按上述不同用户在不同售票点按上述2个步骤购票个步骤购票67891011121314控制事务15控制事务16控制事务17控制事务18控制事务19控制事务20控制事务2122232425262728T1: 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); r

2、ead(B); B := B + temp; write(B);从A过户50¥到B从A过户存款的10%到B开始状态:A=1000¥B=2000¥A+B=3000¥29 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 130 read(A); A := A 50

3、; 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=900¥B=2100¥结束状态:A=850¥B=2150¥A+B=3000¥串串行行调调度度2 23132 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

4、 := B + 50; write(B); read(A); temp := A0.1 A := A temp; write(A); A=855¥B=2000¥A=855¥B=2050¥并并行行调调度度333 read(A); A := A 50; B := B + temp; write(B);T1T2A=1000¥B=2000¥结束状态:A=950¥B=2100¥A+B=3050¥ write(A); read(B); B := B + 50; write(B); read(A); temp := A0.1 A := A temp; write(A); read(B); A=900¥B=2

5、000¥A=950¥B=2000¥A=950¥B=2050¥并并行行调调度度434353637383940读脏数据有时出问题,有时无关紧要读脏数据有时出问题,有时无关紧要例例1:以下述步骤进行账户转移:以下述步骤进行账户转移 1. 将钱加到账户将钱加到账户2 2. 检测账户检测账户1是否有足够的钱是否有足够的钱 没有:从账户没有:从账户2减去此金额减去此金额 (相当于回滚相当于回滚) 有:有: 从账户从账户1减去此金额减去此金额 假设有可能读脏数据假设有可能读脏数据。 账户:账户:A1($100) A2 ($200) A3($300) T1 $150 T2 $25041 可能的执行顺序:可能的

6、执行顺序:T2 将将$250 加到加到A3;A3有有$550T1 将将$150 加到加到A2;A2有有$350T2测试,测试,A2有足够金额(有足够金额($350,脏数据脏数据);允许转账);允许转账T1测试,测试,A1没有足够金额(没有足够金额($100););不允许转账不允许转账T2:从:从A2减去减去$250 A2有有$100 结束结束T1:从:从A2减去减去$150 A2有有-$50 结束(结束(T1回滚回滚)4242例例2:座位选择新方法:座位选择新方法Step1. 发现有效座位,设置发现有效座位,设置seatStatus=occupied 占用占用 无有效座位,夭折。无有效座位,夭

7、折。Step2. 问顾客是否要此座位问顾客是否要此座位, 要,提交。要,提交。 不要,不要,设置设置seatStatus=available , 重复步骤重复步骤1,再选。,再选。 4343假设可能读脏数据,可能的事务执行顺序:假设可能读脏数据,可能的事务执行顺序:T2只是因读脏数据,失去选喜欢的座位的机会只是因读脏数据,失去选喜欢的座位的机会T1 顾客放弃座位顾客放弃座位1 seatStatus=availableT2 发现座位发现座位1占用占用 不能选不能选T1 设置设置seatStatus=occupied 占用座位占用座位14444#当读脏数据无关紧要时,允许读脏数据可以避免当读脏数据

8、无关紧要时,允许读脏数据可以避免 1. DBMS用来预防读脏数据所做的费时的工作用来预防读脏数据所做的费时的工作 2. 因等待而未去读脏数据造成的并发性的丢失因等待而未去读脏数据造成的并发性的丢失#允许明确指定一个给定的事务允许明确指定一个给定的事务可以读脏数据可以读脏数据 ISOLATION LEVEL READ UNCOMMITED4546474849505152事务1:事务2:535455565758隔离级别隔离级别脏脏 读读不可重复读不可重复读幻幻 读读未提交读未提交读是是是是是是提交读提交读否否是是是是可重复读可重复读否否否否是是可串行读可串行读否否否否否否59四种隔离级别四种隔离级

9、别 读未提交读未提交 READ UNCOMMITED 读提交读提交 READ COMMITED 可重复读可重复读 REPEATABLE READ 可串行化可串行化 SERIALIZABLE 默认默认606162636465其他属性分量其他属性分量上只能接受缺上只能接受缺省值或省值或NULL6667686970717273747576777879808182JanawaySELECT on Movie*JanawayINSERT on Studio*JanawayINSERT on Movie*JanawaySELECT on Studio*KirkSELECT on Studio*KirkIN

10、SERTon Studio*PicardSELECT on Studio*PicardINSERTon Studio*KirkSELECT on Movie*PicardSELECT on Movie*SiskoSELECT on StudioSiskoINSERTon StudioSiskoSELECT on MovieSiskoINSERT(name) on Studio83848586JanawaySELECT on Movie*JanawayINSERT on Studio*JanawayINSERT on Movie*JanawaySELECT on Studio*KirkSELECT on Studio*KirkINSERTon Studio*PicardSELECT on Studio*PicardINSERTon Studio*KirkSELECT on Movie*

温馨提示

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

评论

0/150

提交评论