锁表

锁将在用户线程在锁表中写入条目时创建。锁表是可用锁的池。单个事务可以拥有多个锁。有关锁定和与锁定相关联的 SQL 语句的说明,请参阅 GBase 8s SQL 指南:教程

存储在锁表中的以下信息描述锁:

要指定锁定表的初始大小,请设置 LOCKS 配置参数。有关使用 LOCKS 配置参数指定会话的锁定数目的信息,请参阅 GBase 8s 管理员参考 中有关配置参数的主题以及《GBase 8s 性能指南》中有关配置对内存利用率的影响的主题。

如果会话分配的锁定数超过 LOCKS 配置参数中指定的值,那么数据库服务器会将锁定表的大小加倍,最多可达 15 倍。数据库服务器通过尝试在每次增加时使锁定表翻倍来增加锁定表的大小。但是,每次增加期间增加的量不得超过最大值。对于 32 位平台,每次最大可增加 100,000 个锁定。因此,32 位平台允许的最大锁定总数为 8,000,000(启动锁定的最大数目)+ 99(动态锁定表扩展的最大数目)x 100,000(每个锁定表扩展添加的最大锁定数目)。对于 64 位平台,每次最大可增加 1,000,000 个锁定。因此,允许的最大锁定总数为 500,000,000(启动锁定的最大数目)+ 99(动态锁定表扩展的最大数目)x 1,000,000(每个锁定表扩展添加的最大锁定数目)。

可使用 DEF_TABLE_LOCKMODE 配置参数为新表的页或行设置锁定方式。

这些锁定能够使会话在已落实或回滚了并发事务之后再读取数据。对于使用事务日志记录创建的数据库,可使用 onconfig 文件中的 USELASTCOMMITTED 配置参数来指定数据库服务器是否使用上次落实的数据版本。上次落实的数据版本是任何更新发生之前存在的数据版本。使用 USELASTCOMMITTED 配置参数设置的值会覆盖在 SQL 语句 SET ISOLATION TO COMMITTED READ 中指定的隔离级别。有关使用 USELASTCOMMITTED 配置参数的更多信息,请参阅 GBase 8s 管理员参考 中有关配置参数的主题。

有关使用和监视锁定的更多信息,请参阅《GBase 8s 性能指南》和 GBase 8s SQL 指南:教程 中有关锁定的主题。