rwlock_instances
テーブルは、サーバーの実行中にパフォーマンススキーマによって確認されるすべての rwlock
インスタンス (読み取り書き込みロック) を一覧表示します。rwlock
は、特定の時間にそのスレッドが、次の特定のルールに従って、一部の共通リソースにアクセスできるようにするために、コードで使用される同期メカニズムです。リソースは rwlock
によって「保護されている」と呼ばれます。アクセスは共有されている (多くのスレッドが同時に読み取りロックを持つことができる) かまたは排他的 (特定の時間に 1 つのスレッドだけが書き込みロックを持つことができる) のいずれかです。
ロックをリクエストしているスレッドの数、およびリクエストされているロックの性質に応じて、アクセスが共有モードで許可されるか、排他モードで許可されるか、またはまったく許可されないかのいずれかになる可能性があり、まずほかのスレッドが終了するのを待機します。
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
に対して読み取りの競合があるかどうかを確認し、現在アクティブなリーダー数を確認するために使用することができます。
次の両方のテーブルに対してクエリーを実行することによって、モニタリングアプリケーションまたは DBA はロックを伴うスレッド間の何らかのボトルネックやデッドロックを検出できます。
events_waits_current
、スレッドが待機しているrwlock
を確認する場合rwlock_instances
、rwlock
を現在所有しているほかのスレッドを確認する場合
制限があります。rwlock_instances
は、書き込みロックを保持しているスレッドの識別にのみ使用できますが、読み取りロックを保持しているスレッドの識別には使用できません。