データベースはかなり大きくなっていますが、クライアントは過去2年間のデータにのみ興味があります。しかし、古いデータは「ジャスト・イン・ケース」にしておきたいと考えています。SQL Server:古いデータのアーカイブ
ここでは、WAN経由で別のサーバーにデータをアーカイブしたいと考えています。ルックアップテーブルからすべてのデータ、アーカイブサーバーへの上にマスタデータと外部キー表を含む表
- コピー:
私の計画は、ストアドプロシージャの作成です。
- トランザクションテーブルからアーカイブDBにデータをコピーします。
- 2年以上経過したmaster dbからトランザクションデータを削除します。
アプローチがteoretically当社のニーズを満たしますが、2つの主要な問題は、次のとおりです。
性能も:私はSQLリンクサーバーを経由してデータをオーバーコピーしています。大きなテーブルの中には、どのレコードが存在するかを比較して更新する必要があり、存在しないレコードを作成する必要があるため、非常に遅いものがあります。 3〜4時間で実行されるようです。
外部キー違反を防ぐためにテーブルを正しい順序でコピーする必要があります。また、ParentCustomerなしで(たとえば、ParentCustomerフィールドを持つCustomersテーブルなど)自身と関係のあるテーブルを転送する必要があります。 FK違反を防ぐためにParentCustomerを更新する必要があります。したがって、私のInsert文とUpdate文を自動生成することは難しくなります(私は文章を可能な限り自動的に生成したいと思います)。
私がまだ知りませんでしたデータをアーカイブする良い方法があるかもしれないと感じます。 SSISはオプションかもしれませんが、それが私の既存の課題を防ぐかどうかはわかりません。私はSSISについてあまり知らないので、もしそれが行く方法があれば、それを勉強するための資料が必要かもしれません。
提案:複数のスピンドルまたはssdにまたがってテーブルを分割する。現在および過去のスライディングウィンドウパーティションを維持する。現在のデータはあるディスクから読み込まれ、もう一方のディスクはより遅いディスクから読み込まれます。 – Namphibian