約 4 億行を含むデータ ウェアハウス ファクト テーブルのテーブル パーティション分割を実装しようとしています。当社の ETL は、前回のロードから 50 日さかのぼってソース システムからデータを取得します (ソース システムのタイムスタンプに基づいて、新しい行、変更された行)。そのため、ETL サイクルごとに、新しい行が入ってくるだけでなく、ファクト テーブル内の対応する行を更新している古い行もあります。アイデアは、新しい行を Fact テーブルに挿入し、変更された行を更新することです。
パーティション列は日付 (int, YYYYMMDD) になり、月ごとにパーティション化することを検討しています。
私の知る限り、テーブルのパーティショニングは、高速なパーティション切り替え操作による挿入を容易にします。最新のパーティションを分割して新しい空きパーティションを作成し、新しい行をステージング テーブルにロードし (たとえば最新の月などの日付制約を使用)、パーティション スイッチ操作を使用して新しい行をパーティション化された Fact テーブルに "移動" することができます。 . しかし、Fact テーブル内の対応する行を更新する必要がある変更された行をどのように処理すればよいでしょうか? これらの行には、前月のデータを含めることができます。ここでパーティションスイッチが役立ちますか? 通常INSERT
、UPDATE
行は ETL ツール (この場合は SSIS) またはMERGE
ステートメントによって決定されます。この種の状況でパーティショニングはどのように機能しますか?