web-dev-qa-db-ja.com

CXPACKET SUSPENDEDおよびNULL待機タイプ

私はこの記事でクエリを実行していました:

http://sqlity.net/en/708/why-cxpacket-waits-are-not-your-performance-problem/

待機タイプがCXPACKETの一時停止されたクエリに関して、私のスレッドが待機していたものを確認します。

ただし、問題のSPIDの場合、実行中のスレッドは、ウェイトタイプがCXPACKETのSUSPENDED状態の他のすべてのスレッドでNULLのウェイトタイプを示していました。

CXPACKET以外の種類の待機タイプを持つスレッドの1つを期待していましたが、この状況で何が起こっているのか誰かに説明できますか?

ありがとう

3
Tom

表示されているのは、CXPACKET待機のあるスレッドが実際に実行する必要のあるすべての作業で実行され、他のアクティブなスレッド(待機タイプがNULLのスレッド)が完了するのを待機していることです。

ブレントOは、教室を使用して非常に類似しています。教師は、さまざまな紙の束をクラスに配り、単語を見つけさせます。考慮する必要があるのは、1)用紙の束のサイズが異なる可能性がある2)異なる生徒が他の生徒よりも速く/遅い3)1人の生徒が最初のページで1回単語を見つけ、次の生徒はその単語を見つけられるという事実です。 3000ページにわたって400回検索します。

並列処理を処理すると、自然で意図的な動作が見られます。一部のスレッドは他のスレッドよりも速く終了し、他のスレッドが完了するまで待機せざるを得なくなり、すべてのスレッドを再収集して出力を提供します。

http://www.brentozar.com/archive/2013/08/what-is-the-cxpacket-wait-type-and-how-do-you-reduce-it/

4

CXPACKETは常に若いDBAにとっては混乱を招く待機タイプであり、予想外の誤った反応が一般に予想されます。 CXPACKLET待機タイプの複数のacpectsがあり、私は SQL ServerのCXPACKET待機タイプのトラブルシューティング の記事で、ほとんどのテーブルを表示していますSQL Serverの並列処理を正しく理解することが理解の鍵であるため、CXPACKETが高い理由だけでなく、CXPACKETの背景についても説明します。

詳細を知りたくない人のために、記事の概要をここに掲載します(ただし、CXPACKET待機タイプの詳細については、記事を読むことをお勧めします)。

  • MAXDOPを1に設定しないでください。これは解決策ではありません。

  • クエリとCXPACKET履歴を調査して、それが1回か2回だけ発生したものかどうかを理解し、決定します。
    通常はシステムの単なる例外である可能性があるため
    正しく機能する

  • クエリで使用されるテーブルのインデックスと統計をチェックし、それらが最新であることを確認します

  • 並列処理のコストしきい値(CTFP)を確認し、使用する値がシステムに適切であることを確認します

  • CXPACKETにLATCH_XXが付いているかどうかを確認します(PAGEIOLATCH_XXまたはSOS_SCHEDULER_YIELDも付いている可能性があります)。これが
    ハードウェアに合わせてMAXDOP値よりも低くする必要があります

  • CXPACKETにLCK_M_XX(通常はIO_COMPLETIONおよびASYNC_IO_COMPLETIONが付属)が付いているかどうかを確認します。これが
    その場合、並列処理はボトルネックではありません。それらのトラブルシューティング
    統計と問題の根本的な原因と解決策を見つけるのを待つ

5
NikolaD