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 性能指南》。