2

設定

  • 並列処理のしきい値のコスト: 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は、それが行うと言うことを実行します.つまり、クエリを解決するために必要であると信じているだけのテーブルのみを読み取ります.

4

2 に答える 2

1

ここでかなり良い答えを得ました:http://www.sqlservercentral.com/Forums/Topic1064946-391-1.aspx#bm1065048

于 2011-03-01T15:00:16.373 に答える
0

a) クエリがまだ実行されている間にクエリがどのように進行したかを判断する方法を知りません。システムビューのラッチとロックに何か問題があるのか​​もしれませんが、私はそれを疑っています. (残念ながら、私は SSAS に精通しておらず、この 2 つを比較することができません。)

b) 1 つのテーブル内で複数のパーティションを処理する場合、SQL はおそらく並列処理を使用します。その場合、クエリ プランに並列処理の「トークン」が表示されます。ただし、何らかの理由で並列処理が呼び出されずに複数のパーティションを読み取る必要がある場合、それらは並列処理を使用せずに読み取られます。

d) おそらく実行できない別のこと。非常に制御された状況下では、システム モニター (Perfmon) を使用して、クエリの実行中に CPU 使用率やディスク読み取りを追跡できます。これは、サーバーが他の作業を実行している場合や、データがメモリ (バッファ キャッシュ) に常駐している場合には役に立たないため、使用が制限される可能性があります。

c) あなたが実際に理解しようとしていることは何ですか? 一定期間にユーザーがアクセスしているパーティション (存在する場合) は? SQL は「スマートな」クエリ プランを生成していますか? データ、構造、およびクエリの詳細がなければ、アドバイスを思い付くことは困難です。

于 2010-10-29T18:16:02.623 に答える