説明
この関数は、文字列 str で名付けられたロックが現在どのセッションによって使用されているか(つまり、ロックが既に取得されているか)を検出するために使用されます。
構文
IS_USED_LOCK('str')
説明
パラメータの説明
str: チェック対象のロックの名前を指定します。文字列型です。
戻り値
セッションIDを返します:ロックが使用されていることを示します。この数字は、そのロックを取得したクライアントセッションを表します。
NULLを返します:ロックがどのセッションにも使用されていないことを示します。
例
my_lock という名前のロックがどのセッションによって使用されているかをチェックします。また、使用者のセッションIDを返します。
obclient [(none)]> SELECT IS_USED_LOCK('my_lock');
実行結果は次のとおりです:
+-------------------------+
| IS_USED_LOCK('my_lock') |
+-------------------------+
| 3221487701 |
+-------------------------+
1 row in set
実行結果は 3221487701 であり、ロック my_lock がセッションID 3221487701 のセッションによって使用されていることを示しています。このロックを占有しているセッションの情報は、ビュー oceanbase.GV$OB_PROCESSLIST を使用して照会できます。例:
obclient [(none)]> 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