私はSQL Serverデータベースを使用しており、ログファイルは巨大で、毎日成長し続けています。
データベースからデータをアーカイブし、完全バックアップを実行しました。そのとき、ログは基本的に「空」であると期待していました。例えば物理的なサイズは同じかもしれませんが、多くの空き容量があります。ただし、現在のところ0.1%しか無料ではありません。
ログに空き領域がほとんどないのはなぜですか?
BACKUP DATABASE
(完全バックアップ、差分バックアップ、ファイル/ファイルグループバックアップ、コピーのみ)は、ファイルのスペースを解放しません。どちらかといえば、ログファイルのスペースを少し使用して、そのアクションを記録します。
BACKUP LOG
はログを切り捨てます。これは通常、スペースを解放します。
単純復旧モデルデータベースでは、チェックポイントが発生すると、ログが切り捨てられます。
ファイルの物理サイズに影響を与えるバックアップ操作はありません。
それを行う唯一のコマンドはDBCC SHINKFILE
およびDBCC SHRINKDB
(SSMSでは、データベースを右クリックし、[タスク]、[縮小]を選択します)。
SQLデータベースを取得すると、ログファイルは大量になり、毎日増加し続けます。
ログファイルの増大は、データベースの復旧モデルとトランザクションログのバックアップに依存します。データベースが重要ではなく、データの損失がいずれの場合も問題ではない場合は、シンプルリカバリモードにする必要があります。これにより、SQL Serverは、トランザクションがコミットされ、ログの増加が制限されたままの場合にログスペースを再利用できます。ただし、データベースが重要であり、ポイントインタイムリカバリが必要な場合は、データベースを完全リカバリモードにする必要があります。これは、SQL Serverがすべてのログをトランザクションログファイルに保存し、バックアップされるまで再利用しないことを示しています(トランザクションログバックアップ)。
データベースからデータをアーカイブしてから、完全バックアップを実行しました...ログは基本的に「空」であると予期していました。例:*完全バックアップまたはトランザクションログバックアップでも、ログファイルが空のままになることはありません。トランザクションログのバックアップは、ログファイル領域を再利用可能としてマークするだけですが、ファイルサイズは変わりません。
アーカイブとは、一部のデータをフェッチして他の形式で保持した後で、一部のデータを削除したことを意味します。次に、データを削除しても、データやログファイルの物理的なサイズが減少することはないことに注意してください。ただし、データベースで再利用するためにスペースを利用できます。