分布式 DBA: Cursor Stability Isolation Level 的变化:第 2 部分(理解 Currently Committed 行为)
2010-06-16 00:00:00 来源:WEB开发网核心提示:在我的上一篇专栏中,我解释了在多用户环境中,分布式 DBA: Cursor Stability Isolation Level 的变化:第 2 部分(理解 Currently Committed 行为),隔离级别在防止数据库出现数据不一致性时所起到的关键作用,同时,这个锁可能包含以下一种(有且只有一种)情况的信息: 没
在我的上一篇专栏中,我解释了在多用户环境中,隔离级别在防止数据库出现数据不一致性时所起到的关键作用。同时,我也介绍了 Cursor Stability (CS) 隔离级别在 IBM DB2 9.5 实现防止锁技术前后是如何工作的。在本专栏中,我将介绍 DB2 9.7 引入的 Currently Committed (CC) 的语义,并且我将介绍这些语义是如何实现快速数据访问和如何增加运行在 CS 隔离级别下的 SQL 语句的数据并发数。
Currently Committed 语义
DB2 9.7 引入了一个新实现的 CS 隔离级别,这个隔离级别能够使用 CC 语义进一步防止写操作阻塞读操作。它的目的是实现一个 CS 语义允许且能避免锁等待的 CS 隔离级别(类似于 DB2_SKIPDELETED 和 DB2_EVALUNCOMMITTED 注册表变量的用法 — 见侧边栏,“用于在一些环境中延迟或避免获取锁的注册表变量”)。
通过使用完全防止锁技术(我的上一个专栏介绍过),只要 DB2 能够确定所需要的数据已经提交,使用 CC 语义的只读 SQL 就不会获得一个锁。然而,如果 DB2 不确定所需要的数据是否已经提交,运行这个语句的事务将会尝试获得问题记录的锁。
如果获得一个锁后,进程将继续使用传统的 CS 隔离级别行为。如果不能获得一个锁(由于另一个事务获取了这个记录行的 Exclusive 锁),DB2 将检查这个由其他事务所保持的锁,得到关于这个记录的信息。这个锁可能包含以下一种(有且只有一种)情况的信息:
没有信息:表示记录被锁,但是还没有对它作任何操作(即,没有未提交的修改)
有一个 Uncommitted Insert 标识符: 表示该记录是新插入的,但还没有被提交
- ››分布式计算多机部署与配置
- ››分布式单词发音抓取机器人
- ››分布式网络爬虫关键技术分析与实现一网络爬虫相关...
- ››分布式 DBA: 创建和使用分区表
- ››分布式 Key-Value 存储系统:Cassandra 入门
- ››分布式 DBA: Cursor Stability Isolation Level 的...
- ››分布式 DBA:存储、I/O 和 DB2,第 1 部分(针对在...
- ››分布式管理:用 HADR 减少停机时间(详细解释如何...
- ››分布式 DBA:使用物化查询表
- ››DBA经验谈:更改数据文件的可用性
- ››分布式存储系统的实现
- ››DBase:DB2必须了解的常用命令及技巧
更多精彩
赞助商链接