结束语
本教程旨在介绍数据分歧性的不雅念,以及 DB2 9 在单用户和多用户状况下用来维护数据库分歧性的各种机制。假如用户忘掉了举办统统需求的变动,大年夜约假如在用户举办变动的进程中系统崩溃了,又大年夜约数据库应用步伐由于某种启事过早地中缀了,数据库都会变得不平等。当几个用户同时访谒分歧数据库时,也或许发作不平等的状况。比如,一个用户或许在得外地更新统统表之前读取另一个用户的变动,并凭据所读取的不是终极的数据值举办了一些不适合的应用或举办了错误的变动。为了灌注数据不平等(尤其是在多用户状况中),DB2 9 的垦荒人员将下列数据分歧性支撑机制兼并到其方案中:
- 工作
- 隔离级别
- 锁
工作(也称为任务单位)是一种将一个或多个 SQL 应用组织成一个单位的可规复序列,素日位于应用步伐进程中。工作的启动和中缀界说了数据库分歧性点;要么将工作中实验的统统 SQL 应用的结果都应用于数据库(提交),要么完全取消并丢弃已实验的统统 SQL 应用的结果(回滚)。在这两种状况下,数据库都保证在每个工作竣事后处于分歧的形状。
维护数据库分歧性和数据无缺性,同时又容许多个应用步伐同时访谒分歧数据,这种特性称为并发性。在 DB2 中,并发性是经由应用隔离级别完成的。可以应用四种差另外隔离级别:
- 可反复的读
- 读动摇性
- 游标动摇性
- 未提交的读
可反复的读隔离级别可以灌注统统征象,但是会大年夜大年夜低沉并发性的程度(可以同时访谒分歧资源的工作数量)。未提交的读隔离级别提供了最大年夜的并发性,但是脏读、不行反复的读和幻像都或许泛起。
除了隔离级别,DB2 经由对锁的应用在多用户状况下提供并发性。锁是一种用来将数据资源与单个工作讨论相干起来的机制,其用处是控制其他工作在资源与拥有锁的工作相讨论相干的状况下怎样与资源举办交互。可以应用几种不同类型的锁:
- 意向无(IN)
- 意向共享(IS)
- 下一键共享(NS)
- 共享(S)
- 意向互斥(IX)
- 带意向互斥的共享(SIX)
- 更新(U)
- 下一键弱互斥(NW)
- 互斥(X)
- 弱互斥(W)
- 超等互斥(Z)
为了维护数据无缺性,DB2 数据库打点步伐隐式地获取锁,获取的统统锁都在 DB2 数据库打点步伐的控制之下。锁可以摆设在表空间、表和行上。
为了举办优化以获取最大年夜的并发性,行级锁素日比表级锁更好,由于它们所限定访谒的资源要小得多。但是,由于所获取的每个锁都需求必然命量的存储空间和处理责罚时间来举办打点,所以单个表级锁需求的开支比几个单独的行级锁低。
版权声明: 原创作品,容许转载,转载时请务必以超链接体例标明文章 原始情由 、作者信息和本声明。否则将清查法令责任。