対応するアプリケーション キーのサロゲート キーを抽出するためのデータ ウェアハウス用の SSIS ソリューションに取り組んでいます。SSIS のルックアップ タスクを使用していますが、このタスクの問題は、完全なルックアップ テーブルをメモリにキャッシュすることです。私のルックアップ テーブルのサイズは巨大です。つまり、2,000 万レコードです。したがって、ルックアップタスクのいくつかの方法または代替案を提案できる場合
4 に答える
2,000 万件のレコードを含むテーブルがルックアップするには大きすぎるとは考えていません。いくつかのフィルタリングを行うことができ、ルックアップで必要な列のみを選択することで、少量のメモリを使用するように最適化できます。
たとえば、int 型のキー列とルックアップに必要なサイズ 10 の varchar 列がある場合、レコードには 4+10 バイトが必要で、2000 万は 20Mx(4+10) ~= 280MB になり、高すぎるとは見なされません。 .
それでもメモリ使用量を減らしたい場合は、結合を使用する必要があります。
Do you have to scan the whole table? I.e. can you specify your lookup as a database View on the table, or even specify it as the results of a SQL Query (Use results of an SQL Query option)
データを SSIS パッケージに取り込み、必要なものを評価するときに、ルックアップ データで LEFT JOIN を実行します。
ルックアップ テーブルが別のソースにある場合は、SSIS で LEFT JOIN を実行できますが、行もキャッシュされます。JOIN は Lookup よりわずかに速いと思います。
ルックアップ テーブルで必要な列のみを選択し、不要な列をキャッシュしないようにしてください。データ量の多いアプリケーションで SSIS を使用し、ベスト プラクティスについて説明しているMS の "Project "Real"をご覧ください。