跳到主要内容
版本:V1.0.0

IS_USED_LOCK

描述

该函数用于检测由字符串 str 命名的锁是否正在被某个会话使用(即锁是否已经被获取)。

语法

IS_USED_LOCK('str')

说明

参数解释

str: 指定要检查的锁的名称,字符串类型。

返回值

  • 返回会话 ID:表示锁已被使用。这一个数字代表着获取该锁的客户端会话。

  • 返回 NULL:表示锁没有被任何会话使用。

示例

检查名为 my_lock 的锁是否被某个会话使用。并返回使用者的会话 ID。

SELECT IS_USED_LOCK('my_lock');

返回结果如下:

+-------------------------+
| IS_USED_LOCK('my_lock') |
+-------------------------+
| 3221487701 |
+-------------------------+
1 row in set (0.001 sec)

返回结果为 3221487701,表示锁 my_lock 已经被会话 ID 为 3221487701 的会话使用。可以通过视图 oceanbase.GV$OB_PROCESSLIST 来查询占用该锁会话的信息,示例如下:

SELECT * FROM oceanbase.GV$OB_PROCESSLIST WHERE ID = 3221487701\G

返回结果如下:

*************************** 1. row ***************************
SVR_IP: xxx.xxx.xxx.xx1
SVR_PORT: 2882
SQL_PORT: 2881
ID: 3221487701
USER: root
HOST: xxx.xxx.xxx.xx2:61470
DB: NULL
TENANT: mysql001
COMMAND: Sleep
TIME: 1014.214143
TOTAL_TIME: 1014.214143
STATE: SLEEP
INFO: NULL
PROXY_SESSID: NULL
MASTER_SESSID: NULL
USER_CLIENT_IP: xxx.xxx.xxx.xx2
USER_HOST: %
RETRY_CNT: 0
RETRY_INFO: 0
SQL_ID:
TRANS_ID: 0
THREAD_ID: 0
SSL_CIPHER: NULL
TRACE_ID: NULL
TRANS_STATE:
ACTION:
MODULE:
CLIENT_INFO:
LEVEL: 1
SAMPLE_PERCENTAGE: 10
RECORD_POLICY: SAMPLE_AND_SLOW_QUERY
LB_VID: NULL
LB_VIP: NULL
LB_VPORT: NULL
IN_BYTES: 448
OUT_BYTES: 0
USER_CLIENT_PORT: 61470
PROXY_USER:
SERVICE_NAME: NULL
TOTAL_CPU_TIME: 0
TOP_INFO: NULL
MEMORY_USAGE: NULL
1 row in set (0.001 sec)

相关文档

oceanbase.GV$OB_PROCESSLIST