前提・実現したいこと
SQL Server(Express Edition)を使って、開発を行っています。
復旧モデルを「完全」にしてしばらく開発をしていたら、トランザクションログ(.ldfファイル)がHDDの大半を占有していたことに気づいたので
同ログを圧縮後、復旧モデルを「単純」に変更して同ログの推移を調査しています。
発生している問題・エラーメッセージ
仕様上、今回の開発では同ログは必要ないので、
同ログが増加しないように対策をしたいと考えています。
(もしくは増加しても定期的に圧縮されるような対策)
そこでDBに対して以下のコマンドを定期的(20分に1回)に発行するようにしました。
DBCC SHRINKFILE(ログファイル, 5000)
ですがdbcc sqlperf('logspace')
を行って様子を見ているとLog Space Used(%)
の値が徐々に増加しています。
(正確には減少と増加を繰り返しており、現在は10~20%になっています)
質問
1、定期発行のコマンドによってある程度はログが圧縮されているように見えますが、このまま長期稼働をしているといずれログがいっぱいになるのではないかと推測しております。
対処方法として定期発行のコマンドを行うことは間違えてないでしょうか?
2、Log Space Used(%)
の増加量はDBに対する更新処理のデータ量と比例する、認識で正しいでしょうか?
試したこと・わかっていること
・復旧モデルを「単純」、自動拡張を有効にしたところ、本来やりたいDBへの更新処理が(自動拡張のタイミングのみ)遅くなることが分かりました
・そのため現在は復旧モデルを「単純」、自動拡張は無効にしています
・log_reuse_wait
は「13」、log_reuse_wait_desc
は「OLDEST_PAGE」が表示されています
(DBの再起動直後は「NOTHING」ですが時間経過とともに上記に変わります)
・復旧時間(チェックポイント)のオプションは「60」になっています
SQLについては初学者も同然なレベルで恐れ入りますが、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/04/06 00:35 編集
退会済みユーザー
2020/04/07 01:39
2020/04/07 01:54
退会済みユーザー
2020/04/07 02:34