このページは機械翻訳したものです。
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_instances、rwlockを現在所有しているほかのスレッドを確認する場合
制限があります。rwlock_instances は、書き込みロックを保持しているスレッドの識別にのみ使用できますが、読み取りロックを保持しているスレッドの識別には使用できません。