質問: データウェアハウスをプロビジョニングする大規模なデータレプリケーションサービスを作成する作業があります。ソースデータベースは他のサーバー上に存在します。 これまでは、SqlBulkCopyクラスとTSql Exceptsステートメントの組み合わせを使用して、UpdateおよびInsertアイテムをウェアハウスに実装できました。 私の問題は今レコードの削除を処理しています。削除処理のために考えることができるのは、テーブルにカスタムトリガーを作成し、削除したレコードを私のサービスが読むことができる一時テーブルに挿入し、倉庫から削除することだけでした。 そこには多くのデータ複製ツールがあることがわかっていますが、同社はカスタムサービスを望んでいます。 プロビジョニングされるテーブルの中には、1億以上のレコードがあることに**注意してください** 。 助言がありますか?
回答: 私はDeleteトリガーがそれほど悪くないとは思わない。 1億件のレコードは間違いなく良いチャンクですが、SQLが実行パスを最適化できるように、サーバー上でトリガーを実行しています。 クライアント側で何かを行うと、サーバーからレコードを取得してから、倉庫にdeleteコマンドを発行するためのオーバーヘッドが発生します。 あなたを悩ませているトリガーについてはどうですか?