2016-04-29 10 views
1

クラスタ化インデックス列またはパーティション(同じ列)に基づいて(パフォーマンス目的のために)どちらの分割オプションが優れていますか? Oracleの11に私はSSIS(SQL Serverの2008R2 Enterprise Editionを)使用して並行して、それをロードするために、テーブルを分割する必要があり並列ローディングのためにテーブルを分割する方法

最初のオプションは、クラスタ化インデックスが条件と第2のパーティションにクラスタ化インデックスのスキャンを作成する場所に基づいてシーク作成します。

答えて

1

ソースデータベース内のパーティションが異なるディスク上にある場合は、これを利用して並列読み取りを行うことができます。 SSISパッケージには、複数のデータソースがあり、それぞれ別のパーティションから読み込みます。次に、ロードする前に、ストリームをまとめて結合することができます(ユニオンオールトランスフォーム)。

ただし、ターゲット・システム(Oracle?)がこの場合、または実際にSSISを実行するコンピュータまたはネットワークでボトルネックになる可能性があります。一般に、十分なプロセッサパワーとRAMを備えた別のコンピュータでSSISを実行するのが最善です.SQL Serverからリソースを取得することはありません。

SQL Server Enterprise Editionを実行している場合、クエリオプティマイザーは、大量のデータがあるため、パラレル実行プランを作成することができます。グラフィカルな実行計画を調べて、それが何をしているのかを確認する必要があります。

ボトルネックがどこにあるかをテストする必要があります。次に、各ボトルネックを除去するために最適化します。 1つのボトルネックを解消すると、システム全体の別の部分が制限要因になります。

このような簡単なタイミングテストを実行できます。最初のシングルストリーム。並列ストリームそして

enter image description here

。これにより、SQL Serverコンピュータのパフォーマンスの測定方法と、並列ストリームを使用するメリットがあるかどうかを測定できます。 「Microsoft SQL Serverの持つ設計BIソリューションは、」第五モジュールSSISを使用してロードするためのさまざまな戦略を語る「ETLソリューションの設計」:

enter image description here

あり、マイクロソフトの仮想アカデミーのコースです。

重要な点:パフォーマンスを最大限に高めるには、サーバー上でSSISパッケージを実行する必要があります。 Visual Studio(SQL Server Data Tools)内でパッケージを実行すると、パフォーマンスが大幅に低下します。

+0

異なる条件(1つの列に基づいてテーブルを分割するだけ)で多数(2または3)のデータフローブロックを作成し、それらを並列に実行するとどうなりますか?これは、1つのデータフローブロック(テーブル全体)より高速ですか? – PNPTestovir

+1

これをテストする方法を示すために私の答えを更新しました。あなたが答えを見つけ出すことをテストすることによってのみです。 – RichardCL