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

文書翻訳 文書翻訳
文書番号: 822101
すべて展開する | すべて折りたたむ

目次

概要

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 の一覧です。
元に戻す全体を表示する
Lastwaittype waittype 説明
LCK_M_SCH_S 0x01 スキーマの安定性
LCK_M_SCH_M 0x02 スキーマ変更
LCK_M_S 0x03 共有
LCK_M_U 0x04 更新
LCK_M_X 0x05 排他
LCK_M_IS 0x06 インテント-共有
LCK_M_IU 0x07 インテント-更新
LCK_M_IX 0x08 インテント-排他
LCK_M_SIU 0x09 更新する共有インテント
LCK_M_SIX 0x0a 共有-インテント-排他
LCK_M_UIX 0x0b 更新-インテント-排他
LCK_M_BU 0x0c 一括更新
LCK_M_RS_S 0x0d 範囲-共有-共有
LCK_M_RS_U 0x0e 範囲-共有-更新
LCK_M_RI_NL 0x0F 範囲-挿入-NULL
LCK_M_RI_S 0x10 範囲-挿入-共有
LCK_M_RI_U 0x11 範囲-挿入-更新
LCK_M_RI_X 0x12 範囲-挿入-排他
LCK_M_RX_S 0x13 範囲-排他-共有
LCK_M_RX_U 0x14 範囲-排他-更新
LCK_M_RX_X 0x15 範囲-排他-排他
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 の一覧です。
元に戻す全体を表示する
Lastwaittype waittype 説明
LATCH_NL 0x400 NULL ラッチ
LATCH_KP 0x401 保持ラッチ
LATCH_SH 0x402 共有ラッチ
LATCH_UP 0x403 更新ラッチ
LATCH_EX 0x404 排他ラッチ
LATCH_DT 0x405 破棄ラッチ
PAGELATCH_NL 0x410 バッファ ページ NULL ラッチ
PAGELATCH_KP 0x411 バッファ ページ保持ラッチ
PAGELATCH_SH 0x412 バッファ ページ共有ラッチ
PAGELATCH_UP 0x413 バッファ ページ更新ラッチ
PAGELATCH_EX 0x414 バッファ ページ排他ラッチ
PAGELATCH_DT 0x415 バッファ ページ破棄ラッチ
PAGEIOLATCH_NL 0x420 バッファ ページ I/O NULL ラッチ
PAGEIOLATCH_KP 0x421 バッファ ページ I/O 保持ラッチ
PAGEIOLATCH_SH 0x422 バッファ ページ I/O 共有ラッチ
PAGEIOLATCH_UP 0x423 バッファ ページ I/O 更新ラッチ
PAGEIOLATCH_EX 0x424 バッファ ページ I/O 排他ラッチ
PAGEIOLATCH_DT 0x425 バッファ ページ 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 列の値が大きいためにクエリのパフォーマンスが低い場合、そのクエリのチューニングを行います。
IDES IDES ラッチの waitresource は、空き領域を見つけるために PFS ページをスキャンし、ページの割り当てと割り当て解除を反映するためにその PFS ページを更新する場合に使用されます。このラッチは、既存のオブジェクトに単一のページが割り当てられる場合も使用されます。 問題のオブジェクトのクラスタ化インデックスを使用しているかどうかを判断します。

その他の waittype

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

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

この waittype はさまざまな状況で使用されることがあります。ただし、この waittype が記録されることが多いのは、SQL Server のインスタンスへの複数の接続からプロシージャ キャッシュに複数のアドホック クエリ プランが短時間で挿入されている場合です。プロシージャ キャッシュへの挿入または削除の必要があるデータを制限することにより、このボトルネックを解消することができます。たとえば、クエリを再利用できるように明示的にクエリのパラメータ化を行ったり、適切な箇所でストアド プロシージャを使用したりします。
SHUTDOWN 0x20A この waittype は、SPID により SHUTDOWN コマンドが発行され、SPID がアクティブなクエリの完了を待っていることを示します。
WAITFOR 0x20B この waittype は、Transact-SQL ステートメント WAITFOR DELAY が原因で SPID が休止していることを示します。
NETWORKIO 0x800 この waittype は、SPID が、クライアント アプリケーションでデータがフェッチされ、クライアント アプリケーションにさらに結果を送信できるようになるまで待機していることを示します。

関連情報

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
244455 SQL Server 7.0 の sysprocesses テーブルの waittype フィールドおよび lastwaittype フィールドの定義
SQL Server 2000 の master.dbo.sysprocesses システム テーブルの関連情報については、以下のマイクロソフト Web サイトを参照してください。
http://msdn.microsoft.com/library/ja/tsqlref/ts_sys-p_3kmr.asp
SQL Server 2000 のラッチの関連情報については、以下のマイクロソフト Web サイトを参照してください。
http://msdn.microsoft.com/library/ja/architec/8_ar_sa2_0odj.asp

プロパティ

文書番号: 822101 - 最終更新日: 2011年2月15日 - リビジョン: 8.3
キーワード:?
kbinfo kbsystemdata kbdatabase kbfield kbsqlmanagementtools KB822101
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com