2016-12-25 20 views
2

クライアントのマシンにプロジェクトをデプロイした後、dbサイズが100MB未満であるにもかかわらず、sql dbログファイルは最大450Gまで増加しました。ロギングモードはシンプルモードに設定され、トランザクションは30秒ごとに挿入および更新トランザクションを送信するWindowsサービスから送信します。 私の質問は、どのようにDBログファイルの成長の理由を知ることですか? 問題を引き起こす正確なトランザクションが何であるかを知るために、ログファイルを監視する方法を知りたいと思います。 フロントエンドをデバッグする必要がありますか? db logファイルの増加を引き起こすトランザクションが公開されています。 ありがとうございます。SQLログファイルの監視

+0

SIMPLE RECOVERYログファイルを切り捨てる方法についての私の修正を反映するために私の答えを変更されました。本質的には、それは非アクティブなトランザクションを切り捨てる前にCHECKPOINTSに依存しています...それがその巨大なサイズに成長した理由です。 –

答えて

2

シンプルなリカバリモデルでは、 CHECKPOINTに依存しているため、これが重要なデータベースの場合は、FULL RECOVERYプランを使用してクライアントを保護することを検討してください。はい、スペースを増やす必要がありますが、ディスク容量は安く、ポイント・イン・タイム・リカバリとログ・ファイルの管理をより詳細に制御できます。簡潔にしようとすると:

  • A)シンプルモードでのデータベースのみCHECKPOINTが作成されたときのように、あなたのトランザクションログにトランザクションを切り捨てます。とりわけ

  • B)はBACKUPSNAPSHOTの作成、およびLOG SCANs含むuncommitted transactionsの残念ながら、大/たくさん、それらのチェックポイントを作成からデータベースを停止し、それらのトランザクションが完了するまで、データベースは保護されていないままになります。

  • あなたの現在のシステムは、サイズによっては潜在的に損失する可能性のある時間を意味する.bakファイルの正しいエディションを保有しています。ログファイルの

    つまり

データベースが十分な頻度でこれらのトランザクションを切り捨てるチェックポイントを作成することができないので、それはとんでもないサイズです....

少しノート

最初に、トランザクションがコミットされるたびにログファイルは自動的に切り捨てられません(そうしないと、最後にコミットされたトランザクションのみが戻ってきます)。頻繁なログバックアップを取ることで、適切な変更が確実に行われ(特定時点)、SHRINKFILEはログファイルを利用可能な最小サイズ/指定サイズに圧縮します。

DBCC SQLPERF(logspace)を使用して、使用しているログファイルの量とそのサイズを確認します。完全バックアップを実行すると、残りのコミットされていないアクティブなトランザクションにログファイルが切り捨てられます。あなたの取引を研究する上で

いくつかの提案を(サイズを縮小し、これを混同しないでください):

  • あなたは頻繁に最も高価なキャッシュ、およびアクティブな計画を見るために、システム・テーブルを使用することができます。
  • 文書化されていない拡張ストアドプロシージャfn_dblogを使用してログファイルを検索できます。
  • Pinalは、このWebページやリンクで読むことができます。このトピックに関する素晴らしい情報を持っています Beginning Reading Transaction Log
+0

SIMPLE RECOVERYがログファイルを切り捨てるように変更されましたが、CHECKPOINTが作成された後でのみ....この場合はデータベースの活動によって不可能でした。 –

1

ログファイルはテキストであり、ログレベルとエラーメッセージとメッセージの数によって、これらのファイルは非常に高速になります。

logrotateなどのログをローテーションする必要がありますが、Windowsを使用しているように聞こえますが、その解決方法はわかりません。

ログのローテーションの基本は、ログの日次/週次バージョンを使用し、gzipなどで圧縮し、非圧縮バージョンをゴミ箱に移動します。

繰り返しが多いテキストであるため、これはファイルを非常に小さく比較してしまい、ストレージの問題を解決するはずです。オープンtransaction..Youがある場合

1

ログ・ファイルのスペースは、再利用されることはありませんDMVの下に使用してログ・スペースの再利用のための理由を確認することができます...あなたの場合

select log_reuse_wait_desc,database_id from sys.databases 

、お使いのデータベースがに設定されていますシンプルでデータベースは100 MBです。しかし、ログは450 GBまで成長しています。非常に巨大です..

私の理論は、オープンスペースのトランザクションがいくつか存在する可能性があるため、一度それが成長したら戻って収縮しないでください。

知っている通り、あなたはDMVより上で走って見ることができますこの時点でログスペースの再利用を妨げているものは、ログスペースの再利用を妨げた原因を知るために間に合うことはできません。