6

6億を超えるレコードを含むテーブルと、データベースで複雑な検索操作を行う一連のストアドプロシージャを含むデータベースがあります。テーブルに適切なインデックスがある場合でも、ストアドプロシージャのパフォーマンスは非常に遅くなります。データベースの設計は、通常のリレーショナルデータベースの設計です。データベース設計を多次元に変更し、従来のT-SQLクエリの代わりにMDXクエリを使用したいのですが、問題は 、パフォーマンスに関して、MDXクエリが従来のT-SQLクエリよりも優れているかどうかです。はいの場合、クエリのパフォーマンスはどの程度向上しますか?

助けてくれてありがとう。

4

4 に答える 4

13

リンゴとオレンジ:分析サービスのOLAPキューブは、SQL Serverデータベースとは根本的に異なるタイプのストレージであり、異なることを行うように設計されています。技術的には、MDXはT-SQLよりも「高速」ではなく、その逆もありません。これらは単なる言語ですが、さまざまなニーズに合わせて設計されています。

そうは言っても、キューブは通常、静的データの数値分析を行うのに最適なものです。たとえば、時間の経過に伴う多数の販売/トランザクション/その他のレコードを集約するなどです。対照的に、従来のリレーショナルデータベースは、スキーマとインデックスが適切に構築されていれば、検索用に通常は問題なく機能します。判断する簡単な方法:SQLクエリが多くのことを行う必要があるかどうか

select grock, sum/min/max/avg( foo ) 
from bar 
group by grock -- Ideal Analysis Services problem

次に、キューブが役立つ場合があります(これは、集計数学関数(sum()およびgroup by)用に設計されています)。クエリが多くのことを行う場合はOTOH

select cols 
from foo 
where <complicated search> -- Not so much

その場合、キューブはおそらく役に立たないでしょう。代わりに、スキーマ、クエリ、インデックスの調整、およびデータを適切にパーティション化できる場合はテーブルのパーティション化に焦点を当てます。

クラスター化インデックスがあり、クエリに一致する非クラスター化インデックスをカバーしていますか?

于 2009-11-09T04:10:05.000 に答える
6

MS SSAS OLAPキューブは、いくつかのストレージモードで使用できます。

  1. リレーショナル(OLAP)-データとメタデータはDBに残り、さらにいくつかのマテリアライズドビューが追加されます。速い場合とそうでない場合があります。

  2. ハイブリッド(HOLAP)-メタデータと(事前に計算された)集計は、SSASインスタンスを実行している新しいサーバーに保存されます。これにより、「昨年の月ごとの総従業員時間」などの集計を使用してすべてのクエリが高速化されますが、特定のレコードにドリルスルーするクエリは以前と同じである可能性があります。

  3. 多次元OLAP(MOLAP)。すべてのデータに加えて、メタデータと集計がSSASサーバーにコピーされます。これは通常最速ですが、ストレージが重複しています。

これを開始する前に、レポートと分析のためにテーブルレイアウトを最適化することを検討する必要があります。つまり、データウェアハウス(DW)を使用します。つまり、データをキンボールスターのディメンションテーブルとファクトテーブルに配置します。次に、ETL(SSIS)を使用してDWを定期的にロードし、レポートと分析をDWにポイントします。SSASをまったく使用する必要がない場合もあります。スターテーブルレイアウトに対して実行されるSQLクエリは、通常、正規化されたDB運用データベースに対して実行するよりもかなり高速です。それでも遅すぎる場合は、DWの上にSSASキューブを構築します。DWのロードを開始すると、運用データベースからレコードを削除して、毎日の使用を高速化できる場合があります。

要約すると、私の目安は次のとおり
です。1. DWを構築し、ETLプロセスを設定します
2.DWに対してT-SQLレポートを試してください。十分な場合があります。
3.それでも遅い場合は、HOLAPモードで(DW上に)SSASキューブを構築し、MDXを使用してそれらをクエリします。

于 2009-11-06T18:57:01.293 に答える
2

「適切なインデックスを使用しても、ストアドプロシージャのパフォーマンスは非常に遅くなります」

ストアドプロシージャが本当の問題である場合、おそらくプロシージャの使用方法が遅いのではないかと思いますが、定義上、ストアドプロシージャによって遅くなることはありません。あなたはあなたの手順が遅いことを知っていますか?あなたはそれらをプロファイリングしましたか?データベースを再設計する前に、そのルートを詳しく調べます。多次元データベースはOLAP用ですデータベースは厳密にOLAPデータベースですか、それともOLAPとOLTPのハイブリッドですか?たぶん、OLTPデザインのデータを非正規化して非正規化d構造に複製する必要がありますか?テーブル内の6億レコードは決して巨大ではなく、小さくはありませんが、ストアドプロシージャを削除すると、魔法のように処理が速くなるとは思いません。

于 2009-11-04T13:29:45.780 に答える
0

PowerPivot(Excelアドオン)を検討しましたか?垂直圧縮を使用して、データをローカルで約95%圧縮するため、心ゆくまで分析できます。

http://technet.microsoft.com/en-us/library/ee210692.aspx

于 2010-08-27T13:01:18.660 に答える