5

データフロー タスクを使用して、Oracle db から SQL にレコードをプルするタスクがあります。このパッケージは、毎日約 45 分運行しています。このパッケージは、約 15 個のテーブルを更新します。1 つを除き、その他は増分更新です。そのため、ほぼすべてのタスクが 2 ~ 10 分で実行されます。

フル交換が最大 25 分実行される 1 つのパッケージ。このデータフロー タスクを調整して、より高速に実行したいと考えています。

テーブルには 400k 行しかありません。DefaultBufferSize と DefaultBufferMaxRows に関する記事をいくつか読みました。以下疑問があります。

  1. DefaultBufferSize を 100 MB まで設定できる場合、提供できる量を調べたり分析したりする場所はありますか?

  2. DefaultBufferMaxRows は 10k に設定されています。50k を指定し、DefaultBufferSize に 10 MB を指定したとしても、20k までしか保持できない場合、SSIS はどうしますか。それらの 30k レコードを無視するだけですか、それとも 50k レコード (スプーリング) をすべてプルしますか?

  3. Logging オプションを使用して適切な制限を設定できますか?

4

1 に答える 1

4

一般的な方法として (そして十分なメモリがある場合)、少数の大きなバッファーは多数の小さなバッファーよりも優れていますが、ディスクへのページングがある時点までではありません (これは明らかな理由で悪いことです)。

これをテストするには、イベント BufferSizeTuning をログに記録します。これにより、各バッファーに含まれる行数が示されます。

また、バッファーのサイズの調整を開始する前に行うことができる最も重要な改善は、不要な列を削除し、データ型を適切に構成することによって、データの各行のサイズを減らすことです。

于 2013-02-28T14:44:14.607 に答える