Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 系统对象 » 系统过程 » 按字母顺排序的系统过程列表

 

sa_locks 系统过程

显示数据库中的所有锁。

语法
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 权限

副作用

另请参见
示例

有关此系统过程的示例以及扩展可返回的信息量的提示,请参见获取有关锁的信息