2016-10-06 9 views
0

2011年以来1日に数百万のレコードが挿入されているテーブルがあります。そのテーブルのデータサイズだけが800GB以上になりました。私にとっては、過去3ヶ月間のデータが頻繁に照会されていましたが、古いデータ照会はごくまれにしか実行されず、オフラインモードで実行される必要があります。MSSQL Server 2008 Standard Edition大規模な800GBテーブルのアーカイブ

問題1:テーブルに日付の列があり、3か月前にすべてのデータをファイルにアーカイブして、別のストレージに移動できるようにしたい。だから、どのような要件を満たすための最良のアプローチができ、私はバックアップmssqlサーバー上のデータを保持したくありません。

A.ヒストリカルデータをcsvにダンプし、ファイルをいくつかの月または日付名で圧縮するようにSSISパッケージを作成します。必要に応じて、SSISパッケージはファイルを読み込んでデータベースに読み込むことができます。このジョブは、毎日または毎週スケジュールされます。 B.同じ仕事をするためのJAVAコードまたはPythonコードを書く。 C.その他の代替手段はありますか?

問題2:クエリは、一度に1つの日付に対してのみ実行されます。このテーブルのクエリは他のいくつかのメタテーブルと結合されています。だから私は高速クエリのパフォーマンスのために私のテーブルにパーティションを追加する必要がありますか?

+0

十分な版のSQL Serverをお持ちの場合は、代わりにテーブルのパーティション分割を検討してください。あなたはどのエディションを持っていますか(Express、Standard、Enterprise) –

+0

これは標準版です。 – sunilsurana

答えて

0

は、私はおそらく何かを実行したい:

  • 移動したデータは、同じサーバー上の別のデータベースにアーカイブします。 SSISパッケージまたはストアドプロシージャを使用する。
  • 元のテーブルの名前を変更します。依存関係を解除する必要はなく、瞬間の通知でアーカイブされたデータを使用できるようにしたいとします。

  • アーカイブされたデータは、このような労働組合を視野に、すべてのアーカイブデータ、何かを変える必要です名前を変更したテーブル
  • からすべてのデータを選択し、元のテーブルとまったく同じ名前のビューを作成します。 。

    ALTER VIEW [OriginalTableName] AS 
    SELECT * FROM ActiveDate 
    UNION ALL 
    SELECT * FROM ArchiveDB..ArchivedData 
    
  • +0

    私が他のデータベース上を移動すると、ハードディスクがいっぱいになっています。もし私がCSVにダンプすれば、私は他のマシンでCSVを動かし、必要なときに引き出すことができます。 – sunilsurana

    関連する問題