显示数据库中的所有锁。
sa_locks( [ connection [ , creator [ , table_name [ , max_locks ] ] ] ] )
connection 使用此 INTEGER 参数指定连接 ID。该过程只返回有关指定连接的锁信息。缺省值为 0(或 NULL),此情况下返回有关所有连接的信息。
creator 使用此 CHAR(128) 参数指定用户 ID。该过程只返回有关指定用户所拥有的表的信息。creator 参数的缺省值为 NULL。当此参数设置为 NULL 时,sa_locks 返回以下信息:
如果未指定 table_name 参数,则返回数据库中所有表的锁定信息
如果指定了 table_name 参数,则返回当前用户创建的具有指定名称的表的锁定信息
table_name 使用此 CHAR(128) 参数指定表名。此过程仅返回指定表的信息。缺省值为 NULL,此情况下返回所有表的信息。
max_locks 使用此 INTEGER 参数指定为其返回信息的锁的最大数目。缺省值为 1000。值 -1 表示返回所有锁信息。
列名 | 数据类型 | 说明 |
---|---|---|
conn_name | VARCHAR(128) | 当前连接的名称。 |
conn_id | INTEGER | 连接的 ID 号 |
user_id | CHAR(128) | 通过连接 ID 连接的用户。 |
table_type | CHAR(6) | 表的类型。该类型为 BASE(对于表)、GLBTMP(对于全局临时表)或 MVIEW(对于实例化视图)。 |
creator | VARCHAR(128) | 表的所有者。 |
table_name | VARCHAR(128) | 控制锁的表。 |
index_id | INTEGER | 索引 ID 或 NULL。 |
lock_class | CHAR(8) | 锁类。Schema、Row、Table 或 Position 之一。请参见可以锁定的对象。 |
lock_duration | CHAR(11) | 锁的持续时间。Transaction、Position 或 Connection 之一。 |
lock_type | CHAR(9) | 锁类型(这取决于锁类)。 |
row_identifier | UNSIGNED BIGINT | 行的标识符。此为 8 字节行标识符或为 NULL。 |
sa_locks 过程返回的结果集包含数据库中所有锁的信息。
lock_type 列中的值取决于 lock_class 列中的锁分类。可以返回以下值:
锁类 | 锁类型 | 注释 |
---|---|---|
Schema |
Shared(共享模式锁) Exclusive(独占模式锁) |
对于模式锁,row_identifier 和索引 ID 值均为 NULL。请参见模式锁。 |
Row |
Read(读锁定) Intent(意图锁) Write(写锁定) Surrogate(代理锁定) |
行的读锁定可以是短期锁定(在隔离级别 1 的扫描),也可以是在更高隔离级别的长期锁定。lock_duration 列指明读锁定是由于游标稳定性而短期锁定 (Position),还是长期锁定一直保持到 COMMIT/ROLLBACK (Transaction)。行锁定始终保持在其 8 字节行标识符作为 row_identifier 列中的 64 位整数值而被报告的特定行上。代理锁定是行锁定的一种特殊情况。代理锁定被保持在代理条目上,这些代理条目是在参照完整性检查延迟时创建的。请参见插入过程中的锁定。对于表中所创建的每个代理条目,没有唯一的代理锁定。而是一个代理锁定对应于由给定连接为给定表所创建的一组代理条目。对于与代理锁定关联的表和连接,row_identifier 值是唯一的。请参见行锁。 |
Table |
Shared(共享表锁) Intent(意图更新表锁) Exclusive(独占表锁) |
请参见表锁。 |
Position |
Phantom(幻像锁) Insert(插入锁) |
多数情况下,位置锁也被保持在特定行上,且此行的 64 位行标识符出现在结果集的 row_identifier 列中。然而,位置锁还可以被保持在整个扫描上(索引扫描或顺序扫描),在此情况下,row_identifier 列为 NULL。请参见位置锁。 |
位置锁可以与顺序表扫描或索引扫描相关联。index_id 列指明位置锁是否与顺序扫描相关联。如果由于顺序扫描而保持位置锁,则 index_id 列为 NULL。如果由于特定的索引扫描而保持位置锁,则此索引的索引标识符在 index_id 列中列出。该索引标识符对应于 ISYSIDX 系统表的主键,可使用 SYSIDX 视图查看此系统表。如果由于全部索引的扫描而保持位置锁,则索引 ID 值为 -1。
需要 DBA 权限
无
有关此系统过程的示例以及扩展可返回的信息量的提示,请参见获取有关锁的信息。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |