MySQL でロックを表示
今日の投稿では、MySQL でロックを表示する方法を学びます。
MySQL でロックを表示
テーブルの属性は、MySQL Lock
フラグをテーブルに割り当てることで変更できます。 他のセッションが特定の期間にわたって同じテーブルにアクセスするのを制限するために、MySQL はクライアントサーバーが割り当てる可能性のあるテーブル lock
を有効にします。
クライアントは、MySQL ロック
をセッションに対してのみ 取得
または 解放
できます。 これは、クライアントが別のセッションのロックにアクセスしたり、別のセッションが保持しているロックを解放したりできないことを意味します。
MySQL は、Read
ロックと Write
ロックの 2 種類のロックを提供します。
LOCK TABLES table_name READ as alias_table_name
ここで、table_name
は、ロックを適用する必要があるテーブルを示します。 テーブルをエイリアスでロックする場合、そのエイリアスをステートメントで使用して、ロックされたテーブルを参照する必要があります。
セッションに READ
ロックがある場合、テーブルで書き込みアクションを実行できません。 これは、テーブルからデータを読み取るだけの READ
ロックの機能によるものです。
READ
ロックを解除しない限り、他のセッションはテーブルにデータを書き込むことはできません。 したがって、それらはすべてそうすることができません。 READ
ロックを解除するまで、書き込み操作は待機状態になります。
GET_LOCK()
で取得された一意の名前のロックは、MDL の再実装の結果として、Performance Schema metadata locks
テーブルに表示されます。 ロック名は OBJECT_NAME
列に表示され、OBJECT_TYPE
列には USER LEVEL LOCK
と表示されます。
この知識を利用して、セッション間のメタデータ ロックの依存関係を理解できます。 セッションが待機しているロックだけでなく、現在そのロックを制御しているのはどれかを確認できます。
メタデータ ロック テーブルを変更することはできません。 読み取り専用です。
前のアイデアをよりよく理解するために、次の例を検討してください。
SELECT GET_LOCK('alias_table_name', 10);
SELECT * FROM performance_schema.metadata_locks WHERE OBJECT_TYPE='USER LEVEL LOCK'
前の例の最初のステートメントは、指定されたロック名のデータを取得します。 この場合、alias_table_name
はロックの名前を指定し、10
はタイムアウトを表します。
情報は、オブジェクト タイプが 2 番目のステートメントの USER LEVEL LOCK
である metadata locks
テーブルから取得されます。
上記のコード行を、MySQL と互換性のあるブラウザーで実行します。 次の結果が表示されます。
+----------------------------------+
| GET_LOCK('alias_table_name', 10) |
+----------------------------------+
| 1 |
+----------------------------------+
1 row in set (0.00 sec)
*************************** 1. row ***************************
OBJECT_TYPE: USER LEVEL LOCK
OBJECT_SCHEMA: NULL
OBJECT_NAME: alias_table_name
OBJECT_INSTANCE_BEGIN: 139872019610944
LOCK_TYPE: EXCLUSIVE
LOCK_DURATION: EXPLICIT
LOCK_STATUS: GRANTED
SOURCE: item_func.cc:5481
OWNER_THREAD_ID: 35
OWNER_EVENT_ID: 3
1 row in set (0.00 sec)
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn