返回首页

gbase数据、南大通用产品文档:GBase8s锁类型的行为

更新日期:2024年09月11日

GBase 8s 数据库服务器在内部的锁表中存储锁。当数据库服务器读行时,它检查该行或它
的相关联的页、表或数据库是否罗列在该锁表中。如果它在锁表中,则数据库服务器还必
须检查锁类型。锁表可包含下列类型的锁。
锁名

描述
通常放置该锁的语句
S
共享锁
SELECT
X
排他锁
INSERT、UPDATE、DELETE
U
更新锁
在更新游标中的 SELECT
B
字节锁
更新 VARCHAR 列的任何语句
此外,锁表可能存储意向锁。意向锁可为意向共享的(IS)、意向排他的(IX)或意向共
享排他的(SIX)。意向锁是当需要锁定较低颗粒度对象时,数据库服务器(锁管理器)放
置在较高颗粒度对象上的锁。例如,当用户以“共享的”锁定模式锁定行或页时,数据库
服务器在该表上放置 IS(意向共享的)锁来提供立即的检查,检查没有其他用户持有该表
上的 X 锁。在此情况下,仅在该表上放置意向锁,而不是放置在行或页上。仅可以行、页
或表级别放置意向锁。
用户不对意向锁进行直接的控制;锁管理器在内部管理所有的意向锁。
下表展示如果另一用户(或数据库服务器)持有某类型的锁,则用户(或数据库服务器)
可放置哪些锁。
例如,
如果一个用户持有对某项的排他锁,
另一用户请求任何种类的锁
(排

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 251 -

他的、更新或共享的)都会收到错误。此外,如果用户持有对一个项的排他锁,则数据库
服务器不能在该项上放置任何意向锁。

持有 X

持有 U

持有 S

持有 IS

持有 SIX

持有 IX

请求 X 锁






请求 U 锁






请求 S 锁






请求 IS 锁






请求 SIX 锁






请求 IX 锁






要获取关于锁定如何影响性能的信息,请参阅您的《GBase 8s 性能指南》。

Sysdirectives 表存储可应用于查询的外部优化器伪指令。客户机应用程序中的查询是
否能够使用这些优化器伪指令取决于客户机系统上环境变量 IFX_EXTDIRECTIVES 的设置
(如第 3 章所述),并取决于数据库服务器的配置文件中的 EXT_DIRECTIVES 设置。
sysdirectives 表具有以下列:
表 14. SYSDIRECTIVES 表列描述

类型
解释
id
SERIAL
标识优化器伪指令的唯一代码
query
TEXT
查询的文本(如其在应用程序中所存在的一样)
directives
TEXT
优化器伪指令的文本(没有注释)
active
SMALLINT
整数代码,它标识此条目是有效 (=
1) 还是仅测试 (=
2)
hash_code
SMALLINT
仅供内部使用

NULL 值在 query 列中无效。在 id 列上有唯一索引。

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 36 -

node (172.168.83.14)
recover prepare begin