マッチングとミキシング
トランザクションログのバックアップは、トランザクションログファイルの切り捨てとは異なり、トランザクションログファイルの切り捨ては、トランザクションログファイルの圧縮とは異なります。ああ、そうです。トランザクションログファイルをバックアップしても、切り捨ては発生しません。現在の負荷に応じて、データベースエンジンはチェックポイントを設定することを決定する場合がありますが、切り捨てを少し待機します。
説明する
トランザクションログファイルは、データベースがSIMPLE復旧モデルであるかFULL復旧モデルであるかに関係なく、データベースエンジンがデータに加えられた変更をデータベースに格納する場所です。(重要)
これで、データベースのトランザクションログファイルは、1つの連続したストレージコンテナーではなく、トランザクションログ(TLog)ファイル内に順番に作成される仮想ログファイル(VLF)のコレクションになります。VLFのサイズは、現在使用しているSQL Serverのバージョン、およびTLogファイルの作成中に選択した初期サイズ、および(存在する場合)の自動拡張設定で選択したサイズによって異なります。 TLogファイル。
参考文献:
- SQL Serverの2014年にVLF作成アルゴリズムへの重要な変更(SQLSkills.com)
- 初期VLFのシーケンス番号と、デフォルトのログ・ファイル・サイズ(SQLSkills.com)
- 内部ストレージエンジン:ログの円形性質に関する詳細
(SQLSkills。 com)
...そしておそらく逆の順序で
データベースでデータが変更されると、データベースエンジンはこれらの変更を対応するデータベースのTLogに書き込み、トランザクションの一貫性を維持します。これはACIDとしても知られています-原子性、一貫性、分離、耐久性。これらの変更の実際のトランザクションは、TLog(ファイル)のVLFに格納されます。VLFがいっぱいになると、最新のトランザクションが次に使用可能なVLFに順番に格納されます。
例外
ただし、TLogファイルの最後に到達した場合、変更はTLogファイルの最初の最初のVLFに保存されます。(ストレージエンジンの内部で説明:ログの循環性の詳細)
新しいトランザクションを自由に保存できる利用可能なVLFがなく、自動拡張設定が構成されている場合、データベースエンジンは、定義された量だけTLogファイルを拡張し、自動拡張設定と式で定義されたサイズに応じて追加のVLFを作成しますSQL Server 2014のVLF作成アルゴリズムの重要な変更で説明されています。その後のトランザクションは、TLogファイル内の次のVLFに格納できます。
TLogファイルのバックアップ
TLogファイルのバックアップをトリガーすると、データベースエンジンに
- TLogファイルを見てください。
- 最後のトランザクションログバックアップがいつ発生したかを判別します(LSN:ログシーケンス番号、詳細な調査用)
- TLogファイルにチェックポイントを設定する(データベースチェックポイント(SQL Server))
- バックアップが完了する直前に以前のLSNと最後にコミットされたLSNを追跡しながら、TLogファイルのバックアップコピーをディスク/テープに保存します
- すべての変更を「データベース」に転送します
- VLFを再利用可能としてマークする
これまでのところ、TLogファイル内でデータベースエンジンが再利用できるスペースは解放されていません...
TLogファイルの自動切り捨て
...しかし、データベースエンジンに余裕のあるサイクルがあり、非常に大きなプレッシャーがかかっていない場合は、TLogファイルが確認されることがあります。チェックポイントに注意して、VLFを解放して再利用します。TLogファイル内のスペースはVLF(同じサイズ、同じ場所)によって引き続き使用されますが、再利用は自由です。
これは、トランザクションログの切り捨てで文書化されています。
何らかの理由で遅延した場合を除き、ログの切り捨ては次のように自動的に行われます。-単純復旧モデルでは、チェックポイントの後。
- 完全復旧モデルまたは一括ログ復旧モデルでは、ログバックアップの後、前回のバックアップ以降にチェックポイントが発生した場合。詳細については、このトピックで後述する「完全および一括ログ復旧モデルでのログの切り捨て」を参照してください。
これが発生しない場合があります。
自動ですが、ログの切り捨てはさまざまな要因によって遅延する可能性があります。ログの切り捨てが遅れる原因については、「ログの切り捨てを遅らせる要因」を参照してください。
ログの切り捨ての視覚化
ログの切り捨ては、SQLステートメントまたはSSMS UIのデータベーススペースレポートを使用してTLogサイズをクエリするときに確認できます。TLogファイル内の使用済みスペースは、使用可能なTLogファイルサイズの1%にすぎない場合があります。
収縮するかしないか
一般的な推奨事項は、TLogファイルを縮小しないことです。これは、TLogファイルが特定の理由で大きくなり、元のサイズに再び大きくなる可能性があるためです。しかし、それは別の投稿の話です。TLogファイル内のVLFのサイズを再作成するときなど、いくつかの理由があります。
あなたの質問に答える
あなたの仮定と質問のすぐ下にインライン
私の理解は、データベースをバックアップすることでした:
これは間違った仮定です。データベースのバックアップ(FULL、DIFFERENTIAL)は、TLogファイルに対しては何もしません。完全バックアップでは、TLogファイルからコミットされたトランザクションとともにデータベースの一貫した状態が作成されます。DIFFバックアップは、データベースの最後のフルバックアップ以降の過去のすべてのTLogバックアップの一貫した状態を作成します。
ただし、TLOGバックアップは、TLogファイルからコミットされたトランザクションのバックアップを作成し、チェックポイントを設定し、再利用のためにVLFを解放します(高負荷でない場合)。
いいえ、FULLおよびDIFFバックアップを検討する場合。いいえ、TLOGバックアップを検討する場合、データベースエンジンに余裕がある場合は、TLogファイル内のVLFを解放します。
ログの切り捨ては実際にログファイル(LDF)に対して何をしますか?このプロセスは、ディスクがいっぱいになるのを防ぐためのものです。
ログを切り捨てることにより、VLFを再利用できます。それで全部です。
このプロセスには、TLogファイルのIFの増大を防ぐという利点があります。自動成長の設定が設定されているが。
自動拡張設定が設定されていない場合、要件エンジニアリングプロセスでTLogファイルが固定サイズであると判断されたため、ここでの最悪のケースは、TLogバックアップが発生せず、VLFが解放されないため、TLogがいっぱいになることです。TLogは拡張できず、VLFは解放されず、TLogファイル(または内部でVLF)にさらにトランザクションを書き込むことができます。