- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第08章 数据并发性
DB2基础和系统管理 大连交通大学软件学院 第八章 数据并发性 §8.1 并发和并发控制 §8.2 锁的概念,模式,及兼容性 §8.3 隔离级的概念及使用 §8.1 并发和并发控制-案例 并发:多个用户或应用同时竞争同一资源 并发控制: 用正确的方式调度并发操作,使一个用户事务的 执行不受其它事务的干扰,从而避免造成数据的 不一致性 并发机制的好坏是衡量一个DBMS性能的重要标志之一 DBMS并发控制是以事务为单位进行的 §8.1 并发和并发控制-案例 飞机订票系统中的一个活动序列: ① 售票员甲读出某航班的机票余额 A,设A=16; ② 售票员乙读出同一航班的机票余额A,也为16; ③ 甲售票点卖出一张机票,修改余额A=A-1(A=15) ④ 乙售票点卖出一张机票,修改余额A=A-1(A=15) 结果:卖出两张机票,而数据库中余额只减少1 原因:甲乙售票员并发操作导致数据不一致! §8.1 并发和并发控制 并发操作造成的数据不一致情况包括四类: 丢失更新(Lost data due to Concurrency Updates) 当两个事务读取相同数据时,并修改保存,后一个成功的数据修改会保留,前一个被覆盖 未提交读 (Access to Uncommitted Data) 当事务读取未提交的数据时,发生;如:事务 A 修改了一行数据,事务 B 在 A 提交事务之前,读取了被修改行,若 A 回滚了修改操作,则 B 读取的数据可以看作从未存在过的数据。 §8.1 并发和并发控制 并发操作造成的数据不一致情况包括四类: 不可重复读 (Unrepeatable Reads) 在同一事务中,两次读取同一行数据,得到不同的结果集;(原结果集的行被更新或删除) 如:事务A读取了一行数据,事务B在删除或更改该行后提交了修改,则当事务A再次读取该行时,得到不同的值 幻像读 (Phantom Read Phenomenon) 在同一事务中,同一查询执行两次,返回结果可能新增了 一些行(其它行被更改满足查询条件或插入新行而满足条件) §8.2 锁的概念 加锁是实现并发控制的一个非常重要的技术 Locking: 某一事务T在对某个数据对象如表、记录等操作之前,先向系统发出请求,对其加锁保护,在事务T释放它的锁之前,其它事务就不能更新此数据对象 §8.2 锁的对象 §8.2 锁的策略 §8.2 表的锁定模式 在DB2中表级别的锁定模式为:IN、IS、IX、SIX、S、U、X 和 Z; §8.2 表的锁定模式 §8.2 表的锁定模式 §8.2 表的锁定模式 §8.2 表的锁定模式 §8.2 行锁定模式 当严格表锁不能达到要求时,意向锁支持行级别的锁定。DB2 中行级别的锁定模式为:S、U、X、W、NS和NW。 §8.2 行锁定模式 §8.2 行锁定模式 §8.2 行锁定模式 §8.2 锁的兼容性 是指当一个应用程序在表(行)上加上某种锁后,其他应用程序是否能够在表(行)上加上相应的锁,如果能够加上,说明这两种锁是兼容的,否则说明这两种锁不兼容,不能对同一数据对象并发存取。 §8.2 锁的兼容性 §8.2 锁的转换(Lock Conversion) §8.2 锁的升级(Lock Escalation) §8.2 锁超时 §8.2 锁超时 §8.2 死锁 §8.2 死锁 §8.3 隔离级别 并发操作破坏了事务的隔离性; DB2 采用了不同的保护级别,将每一事务与要存取的数据隔离起来,这些不同的保护级别称为隔离级别,包括: ? 未提交读( Uncommitted Read, UR) 游标稳定性 (Cursor Stability, CS) 读稳定性 (Read Stability, RS) 可重复读 (Repeatable Read, RR) 决定如何在事务中对访问的数据加锁或者与其它事务隔离 §8.3 隔离级别 §8.3 隔离级别 未提交读 (Uncommitted Read (UR)): 是DB2支持的最低级别的隔离级别。读取行时,不加锁。此级别下四种并发异常都会产生。 游标稳定性(Cursor Stability (CS)): 该隔离级是缺省值。一个事务中,结果集中只有正在被读取的那一行(游标指向的行)将被加上锁,其它未被处理的行上不被加锁。不会读取未提交数据,可避免产生未提交读现象。 §8.3 隔离级别 读稳定性(Read Stability (RS)): 锁定作为结果表一部分的行。同一行在同一事务内多次读取,值不会更改,但是结果集可能更改。不能避免幻像读现象。 可重复读(Repeatable Read (RR)): 是 DB2 中最高级别的隔离级,不仅满足
文档评论(0)