使用 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 隔离的会话的缺省隔离级别
|