- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华科数据库系统原理第十一章——并发控制
11.1 事务(transaction) 1、定义 构成一个独立逻辑工作单位的数据库操作集。 ·一条SQL语句; ·一组SQL语句序列; ·一个包含对DB操作的应用程序。 2、构成方式 ① 显式 BEGIN TRANSACTION · · · END TRANSACTION/COMMIT/ROLLBACK 其中: COMMIT:提交,事务对DB修改写回到磁盘上的DB中去。 ROLLBACK:回滚,撤消对DB之修改,回滚到事务开始状态。;② 缺省 ·一条SQL语句 ·COMMIT/ROLLBACK 3、事务的ACID性质 1)原子性(Atomicity) ① 定义 事务是一个不可分割的工作单元,其对DB的操作要么都做,要么都不做。 ② 目标 保证DB数据的正确性(转帐问题)。 ③ 技术 ·日志十ROLLBACK(UNDO)(意外终止); ·并发控制(交叉执行)。 ·实现由DBMS自动完成。;2)一致性(consistency) ① 定义 ——事务的执行必须是将DB从一个正确(一致)状态转换到另一个正确(一致)状态。 如:转帐问题中,A有100万人民币是一个正确状态,减去50万,转到B帐上50万,DB从一个正确状态转变另一个正确状态,这两个操作,若只做其中一个,则不能实现DB从一个正确状态转到另一个正确状态,破坏了事务一致性。 ② 目标 保证DB数据正确性(防止丢失更新、读脏、读不可重复)。 ③ 技术 并发控制。 ④ 实现 ·用户定义事务(保证相关操作在一个事务中); ·DBMS维护之。;3)隔离性(isolation) ① 定义 ——一个事务中对DB的操作及使用的数据与其它并发事务无关,并发执行的事务间不能互相干扰。 ② 目标 防止链式夭折。 ③ 技术 并发控制。 ④ 实现 DBMS自动实现。 4)持久性(durability) ① 定义 ——一个已提交事务对DB的更新是永久性的,不受后来故障的影响。 ② 目标 保证DB可靠性;③ 技术 ·提交持久(内存是挥发装置,外存是抗挥发装置)。 (事务终止前应完成commit) ·备份 + 日志。 ④ 实现 DBMS恢复子系统实现之。 ;11. 2 并发控制 1、问题的提出 问题1)丢失更新(lost update) ——两个以上事务从DB中读入同一数据并修改之,其中一事务的提交结果破坏了另一事务的提交结果,导致该事务对DB的修改被丢失。 ;例: ;Sc1=RA(X)RB(X)WA(X)WB(X);问题2)读不可重复(read norepeatable) ——同一事务重复读同一数据,但获得结果不同。 ① 一事务读取后,另一事条对之进行了修改 例: ;按ti执行: ·TA第一次在t1处读B为100; ·TB在t2处修改并写回DB,B为200; ·TA在t3处读B(为校对用),B为200; ·TA两次读B,(第二次为校对用),读结果不同(一次100,另一次为200)。 ② 一事务读取数据后,另一并发事务删去了其中部分数据(少了)。 (幻行现象:Phantom row) ③ 一事务读取数据后,另一事务插入了一些新数据(多了)。 (幻行现象);Sc2=RA(A)RA(B) RB(B) WB(B) RA(A)RA(B);问题3)读“脏”数据 (read dirty) ——读未提交的随后又被撤消(Rollback)的数据。 ;接上例:SC3=RA(X) WA(X) RB(X) WA(X) 按ti执行: ·TA在t1读x (100)并修改为200后写回磁盘DB中; ·TB在t2读x为200; ·TA在t3处撤消对x修改,x恢复为100; ·TB此时读出的x(200)数据与DB实际值(100)不一致,即TB读到的不正确的“脏”数据。 2. 上述问题的原因 多事务并发操作DB被坏了事务的隔离性,导致了数据不一致性。 3. 方法 并发控制(正确的并发操作调度策略)。 ;11. 2 封锁 11. 2.1 概述 1、什么是封锁: 并发控制的一种技术。 并发控制方法 ① 锁(Locking)——商用主要方法 ② 乐观(Optimistic) ③ 时标(timestamping) 2、封锁规则 ① 将要存取的数据须先申请加锁; ② 已被加锁的数据不能再加不相容锁; ③ 一旦退出使用应立即释放锁; ④ 未被加锁的数据不可对之解锁。;11. 2.2 申请时机 1、事务 ·无死锁; ·锁开销少; ·并发性低。 2、一个SQL语句 ·并发性高; ·锁开销大; ·死锁; ·申请频繁。;11. 2.3 申请方式 1、显式 应事务的要求直接加到数据对象上 2、隐式 该数据对象没有独立加锁,由于数据对象的多粒度层次结构中的上级结点加了锁,使该数据对象隐含的加了相同类型的锁。;11
文档评论(0)