Maxdop = 1
が配置されているSQLServer 2008 R2インスタンスに対してサーバー側のトレースを実行し、次にreadtrace.exe
を介してトレースを実行して、再生用のRMLファイルを取得するとします。
リプレイは、Maxdop =
1のインスタンスレベルの設定を保持して、どのクエリもmaxdop = 0
サーバーで並列に実行されないようにしますか?
トレースを見ると、EventSubClassに「1-Select」が付いた「DegreeofParallelism」というイベントがたくさんあります。これにより、クエリが別のインスタンスに対して再生されるときに、クエリにmaxdop = 1
が強制されますか?
Degree of Parallelismイベントは、実際には、EventSubClassではなく、BinaryData列にクエリの並列処理を記録します。 ここ を参照してください:
0x00000000, indicates a serial plan running in serial.
0x01000000, indicates a parallel plan running in serial.
>= 0x02000000 indicates a parallel plan running in parallel.
私の簡単なテストから、RMLまたはトレース再生はDegree of Parallelismイベントを強制しません。これは、サーバーレベルのmaxdopまたはローカルのMAXDOPクエリヒントによって上書きされる可能性があるため、これは理にかなっています。 SQL Serverは通常、使用可能なリソースに応じて、クエリの実行時に並列化するかどうかも決定します。このイベントも収集されますafterクエリが開始され、SQL:BatchStartedのように、リプレイモードで処理を実行するイベントの1つではないようです。たとえば、リプレイトレースをステップ実行した場合、何も発生しません。このイベントで発生します。
HTH