2016-11-27 8 views
1

私は、約250のテーブル(ステージングテーブル、ディメンションテーブル、ファクトテーブル)を作成するように成長したETLを作成しました。SQL Serverインテグレーションサービス - メモリ不足例外

私はStacia MeisnerからETLデザインパターンを入手しました。彼女のETLデザインパターンは、ステージングテーブルのロード、ディメンションテーブルのロード、ファクトテーブルのロードのためのテンプレートパッケージの作成に基づいていました。考え方は、特定のパッケージで設定した変数を使用して適切なストアドプロシージャを呼び出し、リネージとデータの監査を作成し、式を使用して正しいテーブルなどを作成して、ソリューションにテンプレートパッケージをコピーして貼り付けるだけです変数と、データと正しいテーブル名のソースを格納するストアドプロシージャを持っている限り、すべて正常に動作します。

これは... 250台のテーブルに達するまでです。私はBIDSでETLを実行すると、狂ったようにRAMを消費します。 ETLをデプロイしてSQLで実行すると、ETLは実行されません。私のラップトップ上の1つのETL Runは、親パッケージからすべての子パッケージを開くので、おそらく約3〜4ギガバイトのRAMを消費するでしょう。私のソリューションには250のパッケージがあります。

ノートパソコン(現在は8GBまたはRAM)にあるRAMをアップすることはできますが、おそらく私の頭の中に警告音が鳴り響いて、250データフロータスクがより良い選択になっていると思います。今、このデザインパターンの欠陥を理解

は、私が

  1. を次のように私の質問があるとし、これまでETL内で実行されるので、多くのパッケージを持っていることを意図BIDSましたか?
  2. IDE内でETLを実行するとRAMの消費を減らす方法はありますか?
  3. RAMの消費量は予想されますか?その場合、開発者は通常どのようにそれを処理しますか? IDE内でETL全体を実行しないで簡単に回避することができますが、その部分をテストして全体を展開してください。
  4. テーブルごとに1つのパッケージから離れて、データフロータスクを実装する必要があります。 3個のパッケージ(ステージングテーブルのロード用に1個、寸法をロードするために1個、ファクトテーブルをロードするために1個)

お時間をいただきありがとうございます。

よろしく、しばらく離れRAMの質問からステッピング

ジェシー

答えて

1

、私はデザインパターンを続けるだろう。それは、1つのテーブルのETLポストデプロイメントを実行する必要がある状況に遭遇したとき、非常に貴重です。 2012年以降、親パッケージを使用することにより、SSISDBに保持されているデータから有用な監視/レポートを作成できるようになり、より多くの有用なログ情報が得られます。最初にこのパターンを採用するために挙げた他のすべての理由も有効です。パターンは再利用を促進する&標準化、および開発時間を短縮します。また、他の開発者がソリューションを選択したり、サポートしたり、変更を加えたりするのは非常に簡単です。

真に8ギガは巨額ではありませんあなたのETLソリューションがそれほど大きな環境にあるSSIS開発マシンの場合、アップグレードするオプションがあれば、それは良い考えだと思います。かなり大きなETLソリューションで作業しているにもかかわらず、私が問題を抱えているわけではありませんが、前の2台の開発マシンには32GBと16GBのRAMがあります。SSIS IDEは完璧ではありませんが、私はあなたが何を問題にしているかを完全に信じることができます。

IDE内でETLソリューション全体を実行することはよくありません。私が作業を進めているときに独立した部分を実行することが多くなり、その部分が機能していることがわかったらすぐに、開発環境(ローカルインストールかサーバーか)に展開し、エージェント経由でフル稼働させます。エージェントを介して実行される方法とIDEの中で実行される方法の違いを考えると、早期に展開することが有用であることがわかります。また、エージェントを介して実行しているロギング情報に感謝しています。これは、変更がパフォーマンスに影響を与えたかどうかを追跡するのに役立ちます。 2012年以降の展開モデルでは、このように作業するのに時間がかかりません。

最終的に私は、IDEの不完全さに対処するために少し作業を変えるのではなく、多くのメリットを持ってソリッドパターンから離れていくのは間違いだと思います。

最後の注意:ラップトップにローカル開発DBがあり(SSISをローカルで実行し、DBをサーバー上に置くのではなく)、makeを実行している場合は、makeローカルSQL ServerインスタンスのRAMの設定がかなり低いことを確認してください。そうしないと、すべてのRAMを使用してキャッシュされ、その後SQL ServerとSSISがRAMのために戦うことになります。 SSIS IDEでメモリエラーが発生するのを見ました。私はこれがあなたがここで説明しているものだとは思わないが、これがあなたや他の誰かにこのQを見つけた場合にそれを言及している。

+0

ありがとう、本当にありがとう。私はあなたが言及したすべてに同意します。 –