設定
- 並列処理のしきい値のコスト: 5
- 最大並列度 : 4
- プロセッサー数 : 8
- SQL Server 2008 10.0.2.2757
- 多くの結合、多くのレコードを含むクエリがあります。
- デザインは星です。(参照テーブルへの fks を持つ中央テーブル)
- 中央のテーブルは、関連する日付列で分割されています。
- パーティション スキーマは日ごとに分割されます
- パーティション スキーマに割り当てられたファイル グループ内のファイルのサイズを比較して判断すると、データはパーティション スキーマ全体で非常によく分割されています。
- 関連するクエリには、パーティション化された列に設定された述語があります。( cs.dte >= @min_date および cs.dte < @max_date ) など
- 日付パラメーターの値は 1 日離れて @ 真夜中なので、2010-02-01、2010-02-02
- 推定されたクエリ プランは並列処理を示していません
a) この質問は、Sql Server 2008 データベース エンジンに関するものです。OLTP エンジンでクエリが実行されているとき、Progress End イベントを使用して SSAS クエリをプロファイリングするときに得られるような洞察を確認したいと考えています。
b) 推定されたクエリ プランまたは実際のクエリ プランが並列処理を示さない場合、それはすべてのパーティションがチェックされた/読み込まれたことを意味しますか? * 私がここで言おうとしていたのは - ただ b/c クエリ プランに並列性が見られないということです。それは、クエリが複数のパーティションにヒットしないことを保証するものではありません。または - 並列処理とアクセスされるパーティション数の間に確固たる関係はありますか?
c) 提案?他に提供する必要がある情報はありますか?
d) 実際のクエリ プランを見ずに、クエリが並列処理されているかどうかを確認するにはどうすればよいですか? * どのパーティションが使用されているかを特定するのに役立つ場合にのみ、これに興味があります。
11月10日追加
これを試して:
- 1、3、およびすべてのパーティションにヒットするクエリを作成します
- SSMS クエリ ウィンドウを開き、実行します。
SET SHOWPLAN_XML ON
- そのウィンドウで各クエリを 1 つずつ実行します
- 実行ごとに XML のチャンクが追い出されます
- これらの XML 結果を比較します (私はテキスト差分ツール「CompareIt」を使用していますが、同様のツールで十分です)。
実行計画が大幅に異なることがわかります。「3」および「すべて」のクエリには、「ConstantScan」とタグ付けされたテキストのチャンクがあり、テーブルには (それぞれ) 3 およびすべてのパーティションのエントリがあり、そのセクションは「1 パーティション」クエリには存在しません。 . 私はこれを使用して、確かにそうであると推測します.SQLは、それが行うと言うことを実行します.つまり、クエリを解決するために必要であると信じているだけのテーブルのみを読み取ります.