事务与并发控制.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
事务与并发控制

7788 SCOTT 5100 执行结果: 已选择 1 行。 SELECT * FROM emp WHERE empno=7788; 执行结果: 未选定行 说明:该训练中,SCOTT的雇员编号为7788,KING的雇员编号为7839。步骤1先将SCOTT复制到manager表;步骤2删除原来的SCOTT记录;步骤3修改SCOTT的工资为KING的工资;步骤4进行一次性提交;通过步骤5的查询可以看到SCOTT已经移动到了manager 表,其工资修改为5100。 练习 1.参照本章的emp表,以下正确的插入语句是: A. INSERT INTO emp VALUES (1000, 小李, 1500); B. INSERT INTO emp(ename,empno,sal) VALUES (1000, 小李, 1500); C. INSERT INTO emp(empno,ename,job) VALUES (小李,1000,1500); D. INSERT INTO emp(ename,empno,sal) VALUES (小李,1000,1500); 2.删除emp表的全部数据,但不提交,以下正确的语句是: A. DELETE * FROM EMP B. DELETE FROM EMP C. TRUNCATE TABLE EMP D. DELETE TABLE EMP 3.以下不需要进行提交或回退的操作是: A. 显式的锁定一张表 B. 使用UPDATE修改表的记录 C. 使用DELETE删除表的记录 D. 使用SELECT查询表的记录 4.当一个用户修改了表的数据,那么 A. 第二个用户立即能够看到数据的变化 B. 第二个用户必须执行ROLLBACK命令后才能看到数据的变化 C. 第二个用户必须执行COMMIT命令后才能看到数据的变化 D. 第二个用户因为会话不同,暂时不能看到数据的变化 5.对于ROLLBACK命令,以下准确的说法是: A. 撤销刚刚进行的数据修改操作 B. 撤销本次登录以来所有的数据修改 C. 撤销到上次执行提交或回退操作的点 D. 撤销上一个COMMIT命令 * 脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。 不可重复读是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。 常见并发并发一致性问题包括:丢失的修改、不可重复读、读脏数据、幻影读(幻影读在一些资料中往往与不可重复读归为一类)。 2.2.1.1?丢失修改 下面我们先来看一个例子,说明并发操作带来的数据的不一致性问题。? 考虑飞机订票系统中的一个活动序列:? 甲售票点(甲事务)读出某航班的机票余额A,设A=16.? 乙售票点(乙事务)读出同一航班的机票余额A,也为16.? 甲售票点卖出一张机票,修改余额A←A-1.所以A为15,把A写回数据库.? 乙售票点也卖出一张机票,修改余额A←A-1.所以A为15,把A写回数据库.? 结果明明卖出两张机票,数据库中机票余额只减少1。? 归纳起来就是:两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。前文(2.1.4数据删除与更新)中提到的问题及解决办法往往是针对此类并发问题的。但仍然有几类问题通过上面的方法解决不了,那就是: 2.2.1.2?不可重复读 不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。具体地讲,不可重复读包括三种情况:? 事务T1读取某一数据后,事务T2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。例如,T1读取B=100进行运算,T2读取同一数据B,对其进行修改后将B=200写回数据库。T1为了对读取值校对重读B,B已为200,与第一次读取值不一致。? 事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神密地消失了。? 事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。(这也叫做幻影读)? 2.2.1.3?读脏数据 读脏数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取

文档评论(0)

jiaoyuguanliji + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档