锁类型的行为

GBase 8s 数据库服务器在内部的锁表中存储锁。当数据库服务器读行时,它检查该行或它的相关联的页、表或数据库是否罗列在该锁表中。如果它在锁表中,则数据库服务器还必须检查锁类型。锁表可包含下列类型的锁。
锁名称 描述 通常放置该锁的语句
S 共享锁 SELECT
X 排他锁 INSERT、UPDATE、DELETE
U 更新锁 在更新游标中的 SELECT
B 字节锁 更新 VARCHAR 列的任何语句

此外,锁表可能存储意向锁。意向锁可为意向共享的(IS)、意向排他的(IX)或意向共享排他的(SIX)。意向锁是当需要锁定较低颗粒度对象时,数据库服务器(锁管理器)放置在较高颗粒度对象上的锁。例如,当用户以“共享的”锁定模式锁定行或页时,数据库服务器在该表上放置 IS(意向共享的)锁来提供立即的检查,检查没有其他用户持有该表上的 X 锁。在此情况下,仅在该表上放置意向锁,而不是放置在行或页上。仅可以行、页或表级别放置意向锁。

用户不对意向锁进行直接的控制;锁管理器在内部管理所有的意向锁。

下表展示如果另一用户(或数据库服务器)持有某类型的锁,则用户(或数据库服务器)可放置哪些锁。例如,如果一个用户持有对某项的排他锁,另一用户请求任何种类的锁(排他的、更新或共享的)都会收到错误。此外,如果用户持有对一个项的排他锁,则数据库服务器不能在该项上放置任何意向锁。
  持有 X 锁 持有 U 锁 持有 S 锁 持有 IS 锁 持有 SIX 锁 持有 IX 锁
请求 X 锁
请求 U 锁
请求 S 锁
请求 IS 锁
请求 SIX 锁
请求 IX 锁

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