WEB开发网
开发学院数据库DB2 分布式 DBA: Cursor Stability Isolation Level 的... 阅读

分布式 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 标识符: 表示该记录是新插入的,但还没有被提交

1 2 3  下一页

Tags:分布式 DBA Cursor

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接