USELASTCOMMITTED 配置参数

使用 USELASTCOMMITTED 配置参数来指定隔离级别,COMMITTED READ 隔离级别的 LAST COMMITTED 特征是隐含有效的。

onconfig.std 值
USELASTCOMMITTED "NONE"
缺省值
"NONE"
"NONE" = 未标识隔离级别。当尝试在 Committed Read、Dirty Read、Read Committed 或 Read UncommittedNo 隔离级别中读一行时,如果您的会话遇到排他锁,则您的事务不可读那一行,直到持有该排他锁的并发事务提交或回滚。
"COMMITTED READ" = 所有来自 Committed Read 隔离级别的事务都视为最后提交事务。当数据库服务器在试图读一个 Committed Read 或 Read Committed 隔离级别中的行时遇到一个排他锁,数据库服务器读该数据的最近提交版本。
"DIRTY READ" = 所有来自 Dirty Read 隔离级别的事务都视为最后提交事务。如果数据库服务器在试图读一个 Dirty Read 或 Read Uncommitted 隔离级别中的行时遇到一个排他锁,则数据库服务器读该数据的最近提交版本。
"ALL" = 所有来自 Committed Read 和 Dirty Read 两个隔离级别的事务都视为最后提交事务。如果数据库服务器在试图读一个 Committed Read、Dirty Read、Read Committed 或 Read Uncommitted 隔离级别中的行时遇到一个排他锁,则数据库服务器读该数据的最近提交版本。
生效
编辑 onconfig 文件并重启数据库服务器之后。
当您通过运行 onmode -wf 命令在 onconfig 文件中动态地重置该值时。
当您通过运行 onmode -wm 命令重置内存中的该值时。

用法

LAST COMMITTED 特征可减小在有排他行锁的表上并发事务之间发生锁定冲突的风险。USELASTCOMMITTED 配置参数还可为 SET TRANSACTION 语句的 READ COMMITTED 和 READ UNCOMMITTED 隔离级别启用 LAST COMMITTED 语义。

USELASTCOMMITTED 配置参数仅与那些已经创建或更改为锁定颗粒度的 ROW 级别的表一起工作。没有以任何锁模式设置创建的表使用 DEF_TABLE_LOCKMODE 中的缺省设置。如果 DEF_TABLE_LOCKMODE 设置为 PAGE,则 USELASTCOMMITTED 配置参数不可访问表中的最近提交数据,未提交的事务在这些表上持有排他锁,除非这些表明确地变更为锁定颗粒度的 ROW 级别。

与共享磁盘辅助数据库服务器一起使用

在“共享磁盘”(SD)辅助数据库服务器上,USELASTCOMMITTED 配置参数也有效。下列表显示 SD 辅助服务器上 USELASTCOMMITTED 配置参数的有效值及其描述。
表 1. 有效的辅助服务器 USELASTCOMMITTED 值
USELASTCOMMITTED 值 描述
NONE COMMITTED READ LAST COMMITTED 不是会话的缺省隔离级别
COMMITTED READ COMMITTED READ LAST COMMITTED 是所有带有 Committed Read 隔离的会话的缺省隔离级别
DIRTY READ COMMITTED READ LAST COMMITTED 是所有带有 Dirty Read 隔离的会话的缺省隔离级别
ALL COMMITTED READ LAST COMMITTED 是所有带有 Committed Read 或 Dirty Read 隔离的会话的缺省隔离级别