MySQL 8.0 リファレンスマニュアル


27.12.3.4 rwlock_instances テーブル

rwlock_instances テーブルには、サーバーの実行中にパフォーマンススキーマによって認識されるすべての rwlock (読み取り/書き込みロック) インスタンスが一覧表示されます。 rwlock は、特定の時間にそのスレッドが、次の特定のルールに従って、一部の共通リソースにアクセスできるようにするために、コードで使用される同期メカニズムです。 リソースは rwlock によって保護されていると呼ばれます。 アクセスは、共有 (多くのスレッドが同時に読取りロックを持つことができます)、排他 (特定の時間に書込みロックを持つことができるのは 1 つのスレッドのみ) または共有排他 (スレッドは他のスレッドによる一貫性のない読取りを許可しながら書込みロックを持つことができます) のいずれかです。 共有排他アクセスは、sxlock とも呼ばれ、同時実行性を最適化し、読取り/書込みワークロードのスケーラビリティを向上させます。

ロックをリクエストしているスレッドの数およびリクエストされたロックの性質に応じて、他のスレッドが最初に終了するまで待機して、共有モード、排他モードまたは共有排他モードでアクセス権を付与することも、まったく付与しないこともできます。

rwlock_instances テーブルにはこれらのカラムがあります。

  • NAME

    ロックに関連付けられているインストゥルメント名。

  • OBJECT_INSTANCE_BEGIN

    インストゥルメントされたロックのメモリー内のアドレス。

  • WRITE_LOCKED_BY_THREAD_ID

    スレッドが現在排他 (書き込み) モードでロックされた rwlock を持つ場合、WRITE_LOCKED_BY_THREAD_ID はロックしているスレッドの THREAD_ID になり、そうでない場合、それは NULL になります。

  • READ_LOCKED_BY_COUNT

    スレッドが現在共有 (読み取り) モードでロックされた rwlock を持つ場合、READ_LOCKED_BY_COUNT が 1 増分されます。 これはカウンタのみであるため、読み取りロックを保持するスレッドを見つけるためにそれを直接使用することはできませんが、rwlock に対して読み取りの競合があるかどうかを確認し、現在アクティブなリーダー数を確認するために使用することができます。

rwlock_instances テーブルには次のインデックスがあります:

  • 主キー (OBJECT_INSTANCE_BEGIN)

  • (NAME) のインデックス

  • (WRITE_LOCKED_BY_THREAD_ID) のインデックス

TRUNCATE TABLE は、rwlock_instances テーブルに対して許可されていません。

次の両方のテーブルに対してクエリーを実行することによって、モニタリングアプリケーションまたは DBA はロックを伴うスレッド間の何らかのボトルネックやデッドロックを検出できます。

  • events_waits_current、スレッドが待機している rwlock を確認する場合

  • rwlock_instancesrwlock を現在所有しているほかのスレッドを確認する場合

制限があります。rwlock_instances は、書き込みロックを保持しているスレッドの識別にのみ使用できますが、読み取りロックを保持しているスレッドの識別には使用できません。


関連キーワード:  テーブル, パフォーマンス, スキーマ, rwlock, ロック, instances, events, replication, history, 変数