2

単一のステージング テーブルからスター スキーマを設定する最良の方法は何ですか。データロードは数百万行で、スター スキーマは 10 個の関連付けられたディメンション テーブルを持つ 1 つのファクト テーブルです。

シナリオ 1.最初にディメンションへの順次挿入を実行し、その後、更新されたディメンション テーブルとステージング テーブルを結合するファクト テーブルへの大きな挿入を実行します。ここでの私の最大の懸念は、膨大な量のデータによるディメンション/ファクト テーブルへの同時挿入によってロックが発生する可能性があることです。

シナリオ 2.データ ロードを小さなバッチ (10k 行) に分割し、ステージング テーブル全体をループして、シナリオ 1で説明したのと同じ方法でバッチを挿入します。ここで見られる問題は、カーソルを含む大きなテーブルをループすることです。 . さらに、バッチの 1 つがデータの挿入に失敗した場合は、以前に行ったすべての挿入の変更をロールバックする必要があります。

シナリオ 3.大きなINSERT ALLステートメントを記述し、挿入中ずっとスター スキーマをロックします。さらに、ロックの問題に加えて、挿入ステートメントのすべてのビジネスロジックを保持する必要がある複雑な挿入ステートメントが必要になります (デバッグと保守は悪夢です)。

4

1 に答える 1