DB2 V9.7 当前已落实(Currently Committed)

DB2 V9.7 当前已落实(Currently Committed)


2024年4月15日发(作者:photoshop有手机版本吗)

DB2 V9.7 当前已落实(Currently

Committed)

在游标稳定性隔离级别时减少锁等待以及死锁出现的频率

DB2 V9.7 引入了一系列新特性,使客户可以更轻松地节省 IT 成本。具体包

括压缩增强、pureXML 增强、易用性增强、监控增强、工作负载管理增强、

安全性提高、性能提高、应用开发提高、SQL PL 语言支持、SQL 兼容性提

高和高可用、备份、日志、弹性、恢复提高等。本文的重点是介绍“当前已

落实”新特性,该新特性的显著特点是在游标稳定性隔离级别时可以明显减

少锁等待的出现,以及死锁的出现频率。通过使用“当前已落实”的 CS 隔离

级别,可以有效提升高吞吐量事务处理环境下的数据库性能。从 DB2 V9.7

开始,DB2 通过采用完全锁定避免技术,当能够明确获得数据或者页的“已

落实”版本时,允许扫描避免使用行级锁。当无法获知索引或行记录是否已

落实时,扫描将改用使用传统的锁定方式。未提交的插入行在行级锁中是直

接被标识的,允许“当前已落实”扫描直接忽略或跳过该行。

简介

从 IBM DB2 V9.7 开始,DB2 引入了一系列新特性,使客户可以更轻松地节省 IT

成本。具体包括压缩增强(通过对 XML 数据、临时表、索引、数据复制源表的压

缩支持,进一步减少了对存储的需求,提高了 I/O 的效率,提高了对磁盘数据的快

速访问)、pureXML 增强(通过对 pureXML 功能的进一步增强,使得数据仓库中

可以部署和分析 XML 数据;现在 XML 可以在表分区、MDC 表、临时表、用户函

数、分区数据库环境中使用)、易用性增强(通过对易用性的增强,减少了总体拥

有成本 TCO,减少了执行系统管理任务对系统的影响,扩展了以前版本发布的自

治特性)、监控增强(可以更灵活、更高粒度的监控 DB2 环境)、工作负载管理

增强(新增调配正在进行的活动的优先级、与 Linux 工作负载管理 WLM 集成、对

服务类提高缓冲池中 I/O 优先级控制等,新增了 AGGSQLTEMPSPACE、

CPUTIME、CPUTIMEINSC、SQLROWSREAD、SQLROWSREADINSC 等阈值,

改进了基于时间的阈值 ACTIVITYTOTALTIME、CONNECTIONIDLETIME 的粒

度)、安全性提高(可以对敏感数据进行更好的保护)、性能提高(通过在游标稳

定性隔离级别下引入“当前已落实”、扫描共享、在表分区上创建分区索引、在表中

存储内嵌 LOB 文件等提高了对数据的访问速度,增加了数据的并发性; DB2 优

化器通过访问计划重用、Statement concentrator 支持等增强了 DB2 的性能)、

应用开发提高(通过“使用 ALTER TABLE 重命名列名”等简化了数据库对象的管理,

通过引入 TRUNCATE 语句、创建临时表、公共同义词等很多新的功能提高了

SQL 编程、存储过程开发得到了简化和提高等)、SQL PL 语言支持、SQL 兼容

性提高(可以从诸如 ORACLE 应用程序等更容易的迁移到 DB2 环境中)和高可

用、备份、日志、弹性、恢复提高等。

本文的重点是介绍“当前已落实”(currently committed semantics,以后会简称 CC)

新特性,该新特性的显著特点是在游标稳定性(Cursor stability,以后会简称 CS)

隔离级别时可以明显减少锁等待的出现,以及死锁的出现频率。

在 DB2 V9.7 之前的版本中,当我们使用游标稳定性隔离级别(默认的隔离级别)

时,一般只锁定事务声明并打开的游标当前引用的行,也就是说该事务一般只锁定

当前行,对当前行以外的记录不做锁定;对其所获取的锁一直有效,直到游标重定

位或事务终止为止 。如果游标重定位,原来行上的锁就被释放,并获得游标现在

引用的行上的锁 。如果事务修改了它检索到的任何行,那么在事务终止之前,其

他事务不能更新或删除该行,即使游标不再位于被更新或删除的行 。需要注意:

如果只检索的话,一般只锁定当前行;如果对检索的行还进行了更新或删除的话,

则对修改的行也进行了锁定,即便指针移向了其他行,对修改行的锁定还是存在。

而对修改行的锁定会阻止其他应用程序读取该行,直到对修改行的锁定解除后(对

该修改落实后),其他应用才能读取该行。

我们首先来看一下 ORACLE 在 Snapshot 隔离级别下读操作与写操作堵塞的情况,

具体如表格 1 所示,当读操作遇上读操作、读操作遇上写操作和写操作遇上读操

作都不会发生堵塞,而写操作遇上写操作时则会发生堵塞:

表 1. ORACLE Snapshot 隔离级别情况下的的堵塞情况

先出现的工作负载 后出现的工作负载

读工作负载 写工作负载

读工作负载

否(不堵塞) 否(不堵塞)

否(不堵塞)

是(堵塞)

写工作负载

下面我们看一下在 DB2 V9.7 之前的版本中使用游标稳定性隔离级别时读操作与写

操作堵塞的情况,具体如表格 2 所示,当读操作遇上读操作时不会发生堵塞;当


发布者:admin,转转请注明出处:http://www.yc00.com/xitong/1713124553a2187711.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信