web-dev-qa-db-ja.com

不正使用データベースの1回の縮小、またはバックアップからの復元

私は継承したデータベースを持っていますが、それは長い間成長し続けてきました。この増加の95%は、アプリケーションで使用される1つのログテーブルが原因です。データベースは120GBで、完全復旧モードです。圧縮バックアップは約10GBです。サーバーは2008年です。ログファイルは3.5GBです。

尋ねたところ、3か月以上経過したこのログテーブルからすべてのデータを削除できることがわかりました。これにより、100GBの空き容量が得られます。また、ログテーブルをこのレベルに保つためのエージェントジョブも作成しました。

これは、このファイルに約100GBが永久に保存されることを意味します(他のテーブルが以前とは異なる方法で成長し始めたり、エージェントジョブが失敗したりしない限り)

将来の成長のために十分な余地を残しながら、このスペースの一部を解放したいと思います。これは、エージェントの仕事が始まる前よりもはるかに少ないはずです。

したがって、インデックスを縮小してからデフラグしたくないのは、これには多くのダウンタイムが必要になる可能性があり、ほとんどの場合、悪い考えです。

データベースを削除して10GBのバックアップを復元することはオプションですか?これが私に望ましい結果をもたらすかどうかさえわかりません。それは、将来の成長のためにファイルに2GBの空き容量があるような小さなデータベースです。

ありがとう

1
James Anderson

実際、バックアップを復元すると、バックアップが作成されたときの場所に戻ることができます。これは実際には、縮小が適切な数少ないケースの1つです。幸い、これはバックグラウンドプロセスであり、非常に重いOLTPシステムを実行している場合を除いて、システムに大きな影響を与えることはありません。縮小が完了したら、約80GB縮小する必要があります。残りの20個を成長のために保持する場合、ほぼ確実にインデックスを再作成する必要があります。インデックスの再作成(およびそれを必要とする断片化)はパフォーマンスの問題を引き起こす可能性が高いため、メンテナンスウィンドウ中にプロセス全体を実行することを検討する必要があります。メンテナンスウィンドウがない場合は、ゆっくりと試してください。どちらにしても、余分なスペースの縮小を取り除きたい場合は、私が知っている唯一のオプションです。

2
Kenneth Fisher