データベースのパフォーマンスを考慮する場合、VLFはどれほど重要ですか?VLFの最適な状況とは何でしょうか?
データベースのパフォーマンスを考慮する場合、VLFはどれほど重要ですか?VLFの最適な状況とは何でしょうか?
回答:
仮想ログファイルとは何ですか?
SQL Serverは、各データベースのトランザクションログファイルを「仮想ログファイル」(または略してVLF)と呼ばれる小さなチャンクに分割します。その主な機能は、ログバックアップでの切り捨てマーカーとしての機能です。つまり、SQL Serverは完全に空のVLFのみをクリア(および再利用可能にマーク)します。MSDNには、トランザクションログ-物理アーキテクチャに関する記事があります。
VLFの数を決定するものは何ですか?
ログファイルが(自動拡張または手動拡張を介して)大きくなるたびに、ログファイルの新しいセクションは、純粋に新しいセクションのサイズに基づいて、いくつかのVLFに分割されます(既存のトランザクションログはそのまま残されます)。そのため、小さな自動成長設定(つまり、デフォルトの10%自動成長)により、多数のVLFが作成されます。
多数のVLFの影響は何ですか?
多数のVLFが引き起こす主な問題は次のとおりです。
DBCC
バックグラウンドでデータベーススナップショットを使用してブロックせずに一貫性チェックを容易にするため、特定の機能も含まれることに注意してください)。データベースにあるVLFの数を調べるにはどうすればよいですか?
DBCC LOGINFO
データベースのトランザクションログの各VLFに対して1行を返します。この質問には、サーバー上のすべてのデータベースに適用するための便利なスクリプトがいくつかあります。
VLFが多すぎますか?
それはあなたが自分でしなければならない判断の呼び出しです。私の個人的な経験則では、50未満はいじる価値がなく、100を超える(またはそれ以上)ので、自動成長の設定を修正し、(次のメンテナンスウィンドウで)ログを縮小および再作成することを心に留めます(以下を参照) 。
助けて!私には70億のVLFがあり、データベースの復旧には1日かかります。
短いアウトライン(Kimberly Trippのブログから):
BACKUP LOG
)DBCC SHRINKFILE
with TRUNCATEONLY
を実行して、ログファイルを可能な限り小さいサイズに縮小します。ALTER DATABASE [...] MODIFY FILE [...] SIZE=newsize
**ワンステップであなたのトランザクションログのバックアップをリサイズします。**注-非常に大きなログファイル(数十GB以上)がある場合、複数の手順でサイズを変更して、適切なサイズの適切な数のVLFを取得し、過度に「大量の」ログバックアップを回避することができます。VLFは切り捨ての単位であるため、Kimのブログで詳しく説明されているように、ログバックアップサイズも決定します。