暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ANSI Read Committed 与 GBase 8s Committed Read 隔离

三金先生 2023-11-13
69

当程序请求 ANSI Read Committed 或 GBase 8s Committed Read 隔离级别时,数据库服务 器保证它从不返回未提交到数据库的行。此操作防止读取未提交的或后来回滚的数据。 ANSI Read Committed 或 GBase 8s Committed Read 实现简单。在它访存行之前,数据库服 务器测试来确定更新进程是否在该行上放置了锁;如果没有,则它返回该行。由于已被更 新了的(但还未提交的)行在它们上面有锁,因此,此测试确保程序不读取未提交的数据。 ANSI Read Committed 或 GBase 8s Committed Read 实际上不在访存了的行上放置锁,因 此,此隔离级别几乎与 ANSI Read Uncommitted 或 GBase 8s Dirty Read 一样有效率。当 将每一行数据作为独立的单元处理,未引用同一表或其他表中的其他行时,适于使用此隔 离级别。

然而,如果由于并发会话持有行上的共享锁,导致放置该测试锁的尝试不成功,则在 ANSI Read Committed 或 GBase 8s Committed Read 会话中可发生锁定冲突。要避免等待并发进 程(通过提交或回滚来)释放共享锁, GBase 8s 支持 Committed Read 隔离级别的 Last Committed 选项。当此 Last Committed 选项生效时,由另一会话的共享锁导致该查询返回 该行的最近提交了的版本。

还可通过将 USELASTCOMMITTED 配置参数设置为 'COMMITTED READ' 或设置为 'ALL',或通过当用户连接到数据库时设置 sysdbopen( ) 过程中的 SET ENVIRONMENT

语句中的 USELASTCOMMITTED 会话环境选项,来激活 Last Committed 特性。要获取 关于 ANSI Read Committed 的 Last Committed 选项,或 GBase 8s Committed Read 隔离级 别的更多信息,请参阅《GBase 8s SQL 指南:语法》中的 SET ISOLATION 语句的描述。 要获取关于 USELASTCOMMITTED 配置参数的信息,请参阅《GBase 8s 管理员参考手 册》。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论