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 行为)

日志信息:表示该记录包含未提交数据;这种情况下,日志信息标识了当前保持记录锁的事务对记录的第一次修改的日志记录

如果这个锁没有包含任何信息,这个记录会以获得目标锁的方式处理。如果这个锁包含了一个 Uncommitted Insert 标识符,那么这个记录会被忽略,因为这个标识符表示这个记录还没有被提交。如果这个锁包含了日志信息,这个信息将被用于从存储在日志缓存或事务的日志文件中的日志记录查询到该记录的 CC 版本(即,修改前的记录)。然后,DB2 会使用 Log Sequence Number (LSN) 直接访问对应的日志记录(见侧边栏,“DB2 如何确定数据是否已经提交”)。

图 1 说明了使用 CC 语义的 CS 隔离级别的一个 SELECT 语句是如何查询记录的。一定要注意 CC 语义可以应用到 Read Stability (RS) 以及 CS 隔离级别的 SQL 语句上。然而,在 RS 隔离级别上执行时,CC 只支持 DB2_SKIPINSERTED 行为,这种功能不会再引起未提交插入记录的锁等待。

图 1. 在本例中,事务 1 执行了两个 DML 语句,它会导致一个日志信息及一个 Uncommitted Insert 标识符被写入 SALES_REP 表的锁列表。当事务 2 查询 SALES_REP 表时, CC 语义支持从前一个提交事务的日志记录中读取锁定记录的数据;Uncommitted Insert 的记录则不会返回。

分布式 DBA: Cursor Stability Isolation Level 的变化:第 2 部分(理解 Currently Committed 行为)

查看原图(大图) 

Tags:分布式 DBA Cursor

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