現在オフラインです。再接続するためにインターネットの接続を待っています

お使いのブラウザーはサポートされていません

このサイトを利用するには、ブラウザーを更新する必要があります。

Internet Explorer を最新バージョンに更新する

SQL Server 2000 および SQL Server 2005 の master.dbo.sysprocesses テーブル内の waittype 列および lastwaittype 列について

概要
Microsoft SQL Server 2000 および SQL Server 2005 の master.dbo.sysprocesses テーブルは、SQL Server 上で実行されているアクティブなサーバー プロセス ID (SPID) に関する情報が格納されたシステム テーブルです。

SQL Server 2005 を使用している場合は、sys.sysprocesses 互換性ビューを使用してこのテーブルにアクセスすることもできます。

master.dbo.sysprocesses システム テーブルの waittype 列、lastwaittype 列、waittime 列、および waitresource 列には、プロセスが待機状態になっているリソースに関する情報が格納されています。

この資料では、lastwaittype に格納される値および関連する waittype の値の一覧を掲載し、それぞれの意味について簡単に説明します。
詳細
SQL Server のインスタンスの master データベースに保存される master.dbo.sysprocesses システム テーブルには以下の列が含まれており、システム管理者がプロセスを監視してリソースの競合やブロックの問題を発見するのに役立ちます。
  • waittype : waittype フィールドは、予約されている内部的なバイナリの列です。waittype フィールドの値は、待機している接続が存在するリソースの種類を示します。
  • lastwaittype : lastwaittype フィールドは、waittype フィールドの内容を示す文字列です。lastwaittype フィールドは、SPID の直前または現在の waittype を示します。ある SPID に対する waittype 列の値が 0x0000 の場合、その SPID は現在リソースの解放待ちをしていません。この場合、lastwaittype 列には、SPID の直前の waittype が示されています。一方、ある SPID に対する waittype 列の値が 0 以外の場合、その SPID に対する lastwaittype 列および waittype 列の値は同じです。これらの値は、その SPID に関する現在の待機状態を示します。

    : UMSTHREAD waittype は、この原則の例外です。詳細については、「その他の waittype」の UMSTHREAD の説明を参照してください。
  • waittime : waittime 列には、SPID が現在の waittype で待機している時間がミリ秒単位で示されます。
  • waitresource : waitresource 列には、SPID が解放待ちをしているリソースに関する詳細情報が示されます。
この資料の後半では、SQL Server でサポートされている中でも、master.dbo.sysprocesses システム テーブルに記録される頻度の高い waittype について説明します。

ロックの waittype

次の表は、SQL Server 2000 および SQL Server 2005 の master.dbo.sysprocesses システム テーブルで使用されるロックの waittype の一覧です。
Lastwaittypewaittype説明
LCK_M_SCH_S0x01スキーマの安定性
LCK_M_SCH_M0x02スキーマ変更
LCK_M_S0x03共有
LCK_M_U0x04更新
LCK_M_X0x05排他
LCK_M_IS0x06インテント-共有
LCK_M_IU0x07インテント-更新
LCK_M_IX0x08インテント-排他
LCK_M_SIU0x09更新する共有インテント
LCK_M_SIX0x0a共有-インテント-排他
LCK_M_UIX0x0b更新-インテント-排他
LCK_M_BU0x0c一括更新
LCK_M_RS_S0x0d範囲-共有-共有
LCK_M_RS_U0x0e範囲-共有-更新
LCK_M_RI_NL0x0F範囲-挿入-NULL
LCK_M_RI_S0x10範囲-挿入-共有
LCK_M_RI_U0x11範囲-挿入-更新
LCK_M_RI_X0x12範囲-挿入-排他
LCK_M_RX_S0x13範囲-排他-共有
LCK_M_RX_U0x14範囲-排他-更新
LCK_M_RX_X0x15範囲-排他-排他
SQL Server 2000 および SQL Server 2005 でサポートされているロックの種類の詳細については、SQL Server Books Online の以下のトピックを参照してください。
  • SQL Server のロック
  • ロックの互換性
また、SPID がロックの waittype で待機状態であり、master.dbo.sysprocesses システム テーブルに記録された対応する waittime 列の値が非常に大きい場合、その SQL Server のインスタンスでブロックの問題のトラブルシューティングを行う必要があります。

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
224453 [INF] SQL Server 7.0 または SQL Server 2000 のブロッキング問題と解決策

ラッチの waittype

ラッチは、負荷の軽い短期の同期オブジェクトです。次の表は、さまざまな種類のラッチの一覧です。
  • バッファなし (Non-BUF) ラッチ : バッファなしのラッチは、メモリ上のデータ構造体の同期や、競合の影響を受けるコード行の再入防止に使用されます。このラッチの用途は多岐にわたりますが、バッファ ページへのアクセスの同期には使用されません。
  • バッファ (BUF) ラッチ : バッファ ラッチは、BUF 構造体および関連するデータベース ページへのアクセスを同期するために使用されます。通常、バッファ ラッチが使用されるのは、バッファ ページの直列化が必要な処理 (ページの分割や新しいページの割り当てなど) の実行時です。このラッチはトランザクション終了時まで保持されるものではありません。このラッチは、master.dbo.sysprocesses には PAGELATCH という waittype で示されます。

    BUF ラッチの競合が発生する原因の 1 つに関する情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    328551 [FIX] tempdb データベースの同時実行制御の強化
  • IO ラッチ : IO ラッチは BUF ラッチのサブセットであり、バッファおよび関連するデータ ページまたはインデックス ページで入出力処理を実行中の場合に使用されます。ディスクからメモリへの転送には PAGEIOLATCH waittype が使用され、この waittype に対する waittime の値が大きい場合は、ディスク入出力サブシステムに問題があります。
次の表は、SQL Server 2000 および SQL Server 2005 の master.dbo.sysprocesses システム テーブルに記録されるさまざまなラッチの waittype の一覧です。
Lastwaittypewaittype説明
LATCH_NL0x400NULL ラッチ
LATCH_KP0x401保持ラッチ
LATCH_SH0x402共有ラッチ
LATCH_UP0x403更新ラッチ
LATCH_EX0x404排他ラッチ
LATCH_DT0x405破棄ラッチ
PAGELATCH_NL0x410バッファ ページ NULL ラッチ
PAGELATCH_KP0x411バッファ ページ保持ラッチ
PAGELATCH_SH0x412バッファ ページ共有ラッチ
PAGELATCH_UP0x413バッファ ページ更新ラッチ
PAGELATCH_EX0x414バッファ ページ排他ラッチ
PAGELATCH_DT0x415バッファ ページ破棄ラッチ
PAGEIOLATCH_NL0x420バッファ ページ I/O NULL ラッチ
PAGEIOLATCH_KP0x421バッファ ページ I/O 保持ラッチ
PAGEIOLATCH_SH0x422バッファ ページ I/O 共有ラッチ
PAGEIOLATCH_UP0x423バッファ ページ I/O 更新ラッチ
PAGEIOLATCH_EX0x424バッファ ページ I/O 排他ラッチ
PAGEIOLATCH_DT0x425バッファ ページ I/O 破棄ラッチ


SQL Server 2000 SP4 以降では、最も一般的な Non-BUF ラッチである Latch_XX ラッチの waitresource 列が次の表の値で設定されます。SP4 より前の SQL Server 2000 では、ユーザーダンプなどでさらに詳細に診断しなければ、Non-BUF ラッチが保持されていた理由を特定できません。waittype または waitresource は waittime を使用して表示されます。waittime により、ミリ秒単位でスレッドの待機時間が指定されます。
waitresource説明トラブルシューティング
FCB FGCB_ALLOCこれらの Latch_XX ラッチは、ページがファイルから割り当てられる場合に保持されます。これは単一エクステントでも混合エクステントでも同じです。これらのラッチは、ファイルの拡張や圧縮、ファイルの名前変更やドラッグ アンド ドロップ、およびファイルの追加や削除などの割り当て操作でも保持されます。ファイルが圧縮または拡張されているかどうかを判断します。SQL Server 2000 SP4 以降では、自動拡張処理が 30 秒を超える場合、自動拡張オプションがエラー ログに記録されます。理想的には、自動拡張オプションをバックアップとして使用し、容量設計を慎重に行って、実行時にファイル拡張のパフォーマンスが低下しないようにする必要があります。また、自動拡張のデフォルト値は 10% ですが、これを任意の固定サイズに変更できます。運用環境では自動圧縮機能を使用しないことをお勧めします。このファイルグループに含まれるファイルから多数の割り当て要求が発行されている場合もあります。そのようなファイルグループにさらにファイルを追加できます。
TRACE TRACE_CONTROLLER TRACE_IO_SYNCこれらの Latch_XX ラッチは、プロファイラ トレース操作で同期を行うために保持されます。同期操作では、トレースの開始や停止、トレース状態の設定、およびリーダーとライタの同期が実行されます。実行中のプロファイラ トレースを特定します。同時に複数のプロファイラ トレースを実行しないようにします。プロファイラ トレースが開始されると、トレースがアプリケーション イベント ログに記録されます。さらに、SQL クエリ アナライザで次のクエリを使用することにより、アクティブなトレースを表示できます。
SELECT * FROM ::fn_trace_getinfo(NULL)
PARALLEL_PAGE_SUPPLIERこれらの Latch_XX ラッチは、クエリの並列実行用のページの取得を同期するために使用されます。このラッチはそのクエリが並列実行されていることを示し、通常のバッファ ラッチになる場合があります。waittime 列の値が大きいためにクエリのパフォーマンスが低い場合、そのクエリのチューニングを行います。
IDESIDES ラッチの waitresource は、空き領域を見つけるために PFS ページをスキャンし、ページの割り当てと割り当て解除を反映するためにその PFS ページを更新する場合に使用されます。このラッチは、既存のオブジェクトに単一のページが割り当てられる場合も使用されます。問題のオブジェクトのクラスタ化インデックスを使用しているかどうかを判断します。

その他の waittype

次の表は、SQL Server 2000 および SQL Server 2005 の master.dbo.sysprocesses システム テーブルに記録される可能性のあるその他の waittype の一覧です。
Lastwaittypewaittype説明
SLEEP0x20この waittype は、指定された時間、SPID が待機状態にあることを示すもので、レイジー ライタによる書き込み、チェックポイント、またはサーバー側プロファイラのトレース イベントを処理するバックグラウンド スレッドで発生することの多い状態です。
IO_COMPLETION0x21この waittype は、SPID が I/O 要求が完了するまで待機していることを示します。sysprocesses システム テーブルで SPID に対してこの waittype が記録されている場合、パフォーマンス モニタのカウンタ、プロファイラ トレース、fn_virtualfilestats システム テーブル値関数および SHOWPLAN オプションを使用してディスクのボトルネックを特定して、その SPID に対応するクエリ プランを分析する必要があります。I/O の帯域を広げるか I/O アクセスを他のドライブに分散させることにより、この waittype の出力を低減することができます。また、インデックスの使用や、不適切なクエリ プランの調査、メモリに対する過負荷の調査を行って I/O を低減することもできます。
ASYNC_IO_COMPLETION0x22この waittype は、SPID が非同期 I/O 要求が完了するまで待機していることを示します。IO_COMPLETION waittype と同様、この waittype も I/O ボトルネックが存在することを示します。BACKUP、CREATE DATABASE、ALTER DATABASE やデータベースの自動拡張などの長時間にわたる I/O 関連処理の実行中に、SPID に対してこの waittype が出力されることがあります。この waittype はディスクのボトルネックを示している場合もあります。
RESOURCE_SEMAPHORE0x40この waittype は、SPID がリソースの解放待ちをしていることを示します。この場合、通常 SPID はクエリの実行中に並べ替えまたはハッシュ処理用のメモリを取得するために待機しています。この waittype は、バッファ プールの可視部分にメモリの過負荷が存在することを示している場合もあります。
DTC0x41この waittype は、SPID が Microsoft 分散トランザクション コーディネータ (MS DTC) サービスの解放待ちをしていることを示します。
OLEDB0x42この waittype は、SPID が OLE DB プロバイダに対して関数の呼び出しを実行し、要求したデータが関数から返されるまで待機していることを示します。この waittype は、要求したデータがリモート プロシージャ コールまたはリンク サーバー クエリから返されるまで SPID が待機していることを示している場合もあります。要求したデータが BULK INSERT コマンドまたはフルテキスト検索クエリから返されるまで SPID が待機している場合もあります。

OLEDB waittype は、リンク サーバー クエリ、フルテキスト検索クエリ、BULK INSERT コマンド、クライアント側のプロファイラ トレース、sysprocesses テーブルなどの仮想テーブルの具体化、ログ リーダー、DBCC CHECKDB などのさまざまな待機状態を示すために使用されます。
RESOURCE_QUEUE0x44これは、SQL Server のバックグラウンド スレッドの通常のアイドル状態です。
ASYNC_DISKPOOL_LOCK0x45データベース ファイルの作成、拡張、削除などの長時間にわたる I/O 関連の処理の実行中にこの waittype が記録されることがあります。
UMSTHREAD0x46この waittype は、クライアント アプリケーションから受信したバッチがあり、その要求を処理するためのワーカー スレッドが不足していることを示します。複数の SPID に対して繰り返し x0046 waittype が記録されている場合、システムのどこかに深刻なボトルネックが存在し、ワーカー スレッドがすべて使用されています。UMSTHREAD waittype に対する waittime 列の値は常に 0 であり、lastwaittype 列には UMSTHREAD ではなく、別の waittype の名前が誤って表示されることがあります。
WRITELOG0x81この waittype は、SPID がトランザクション ログ I/O 要求が完了するまで待機していることを示します。この waittype は、ディスクのボトルネックが存在することを示している可能性もあります。
PSS_CHILD
EXCHANGE
CXPACKET
0x101
0x200
0x208
これらの waittype はすべてクエリの並列実行に関するものです。これらの waittype は、SPID が並列処理の完了または開始を待っていることを示します。
PAGESUPP0x209この waittype は、並列スキャンの複数の呼び出し元に行を分散するために必要な直列化によって発生した待ち時間を追跡するためのものです。
CURSOR0x20Cこの waittype は、SPID が非同期のカーソルを使用し、スレッドの同期を行っていることを示します。環境設定オプション sp_configure ‘cursorthreshold’ により、カーソルが非同期で作成された時期を確認できる場合があります。
DBTABLE0x202この waittype は、スレッドがチェックポイント処理の実行待ちをしていて、他のスレッドが既にデータベースのチェックポイント処理を実行していること示します。
EC0x203この waittype は、SPID が実行コンテキストへのアクセス待ちをしていることを示します。
TEMPOBJ0x204この waittype は、削除対象の一時オブジェクトがまだ使用中のため SPID が待機していることを示します。
XACTLOCKINFO0x205この waittype は、ロック一覧の保守の実行待ちをしていることを示します。
LOGMGR0x206この waittype は、SPID がデータベースをシャットダウンするために、未完了のトランザクション ログ I/O 要求が完了するまで待機しているときに使用されます。
CMEMTHREAD0x207この waittype は、SPID がスレッドセーフなメモリ オブジェクトへのアクセスを待っていることを示します。直列化が行われるため、ユーザーがメモリ オブジェクトからメモリの割り当てまたは解放を行っている間、同じタスクを実行しようとする他の SPID は待機する必要があり、SPID の待機中は CMEMTHREAD waittype が設定されます。

この waittype はさまざまな状況で使用されることがあります。ただし、この waittype が記録されることが多いのは、SQL Server のインスタンスへの複数の接続からプロシージャ キャッシュに複数のアドホック クエリ プランが短時間で挿入されている場合です。プロシージャ キャッシュへの挿入または削除の必要があるデータを制限することにより、このボトルネックを解消することができます。たとえば、クエリを再利用できるように明示的にクエリのパラメータ化を行ったり、適切な箇所でストアド プロシージャを使用したりします。
SHUTDOWN0x20Aこの waittype は、SPID により SHUTDOWN コマンドが発行され、SPID がアクティブなクエリの完了を待っていることを示します。
WAITFOR0x20Bこの waittype は、Transact-SQL ステートメント WAITFOR DELAY が原因で SPID が休止していることを示します。
NETWORKIO0x800この waittype は、SPID が、クライアント アプリケーションでデータがフェッチされ、クライアント アプリケーションにさらに結果を送信できるようになるまで待機していることを示します。
関連情報
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
244455 SQL Server 7.0 の sysprocesses テーブルの waittype フィールドおよび lastwaittype フィールドの定義
SQL Server 2000 の master.dbo.sysprocesses システム テーブルの関連情報については、以下のマイクロソフト Web サイトを参照してください。SQL Server 2000 のラッチの関連情報については、以下のマイクロソフト Web サイトを参照してください。
プロパティ

文書番号:822101 - 最終更新日: 02/15/2011 20:36:00 - リビジョン: 8.3

  • kbinfo kbsystemdata kbdatabase kbfield kbsqlmanagementtools KB822101
フィードバック
cript> >ow.location.protocol) + "//c.microsoft.com/ms.js'><\/script>");