MySQL でロックを表示

Shraddha Paghdar 2023年6月20日
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 Paghdar avatar Shraddha Paghdar avatar

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