web-dev-qa-db-ja.com

予期しない増加が発生したトランザクションログファイルのサイズ

SQL Server 2008 R2標準バージョンを使用しており、メンテナンスプランRebuild Index, Reorganized Index and update Statisticを作成し、毎日午前1時にスケジュールしました。このメンテナンスプランを実行した後、データベーストランザクションログファイルのサイズが異常に増加しました。たとえば、プライマリデータファイルが7 GBの場合、トランザクションログファイルは55 GBに増えます。

縮小プロセスなしでトランザクションログファイルのサイズを削減する方法(悪いため–断片化が増加する–パフォーマンスが低下するため)

推奨されるもう1つのソリューションは、フルバックアップ後のトランザクションログバックアップです。同じことを行い、ファイルサイズに変化がないことを確認しました。プライマリファイルは7 GB、トランザクションログファイルは55 GBになる前と同じサイズを示しています。

パフォーマンスに影響を与えずにログファイルのサイズを削減する最善の方法を教えてください。

5
user35318

縮小プロセスなしでトランザクションログファイルのサイズを削減する方法(不良であるため–断片化が増加する–パフォーマンスが低下するため)

それは真実ではありません。ログの縮小は非常に無害です。 データの縮小 を考えています。ログが大きくなる理由、縮小する方法、無害である理由の説明については、 SQL Serverログを縮小する方法 を参照してください。

最初の推奨事項は、スマートインデックスメンテナンスプランを使用することです。過剰な再構築は高価で、害があり、完全に不要です。多くの人が Ola Hallengrenのインデックスメンテナンススクリプト を誓います。

最小限のロギングを活用することも検討する必要があります。インデックスの保守は、最小限のログが記録される操作の主要な候補ですが、データベースの一括ログ復旧モデルを使用して、それらを有効にする必要があります。 最小限に記録できる操作を参照してください

データベースがシンプルまたは一括ログ復旧モデルに設定されている場合、一部のインデックスDDL操作は、操作がオフラインで実行されてもオンラインで実行されても、最小限のログに記録されます。

8
Remus Rusanu

rEBUILD/REORGANIZE/Update-STATSのような操作中にログサイズを増やすことは、実際のデータサイズとそのサイズに応じて正常です。削減できるのは、保守計画の不適切な実装による不要なディスク使用です。

初心者次のMSDN BOL情報を心からお読みください。

インデックス操作の復旧モデルの選択

表から、データベースがSIMPLEリカバリモデルであっても、REORGANIZE操作は完全にログ記録されていることがわかります。しかし、再構築は最小限に記録されます。

インデックスの再編成と再構築

上記のリンクから、NONCLUSTEREDインデックスを無効にせずにクラスター化インデックスを再構築すると、ディスクの使用量に大きな影響を与えることがわかります。また、CLUSTEREDインデックスとNONCLUSTEREDインデックスのREBUIDL/REORGANIZE操作の順序も重要です。すべてのNONCLUSTERED OPERATIONの後にCLUSTERED INDEX操作を実行する必要があります。

2つのフェーズで大きなインデックスのREBULDを説明する情報にも注意してください。その操作の2番目のフェーズはバックグラウンドで実行され、dbパフォーマンスには影響しませんが、そのフェーズが終了するまでディスク領域が使用されたままになるという欠点があります。

次に、実行できる論理的な手順は何ですか?

0)データベースが正しい復旧モデルであることを確認します。 dbが "FULL RECOVERY"モードの場合、適切な横断ログバックアッププロセスも必要です。そうでない場合は、「完全復旧」は本当に必要ないか、現在実装されているログバックアッププロセスを再検討する必要があります。

1)メンテナンスプランをチェックし、適切な条件に基づいてREBUILD OR REORGANIZE(たとえば、フラグメンテーションの割合)を実行していることを確認します。)場合によっては、インデックスを再構築する必要があることを確認します特定のテーブルは問題ありません。

2)NONCLUSTEREDインデックスの操作の後にCLUSTERED INDEXのOPERATIONが続くかどうかを確認します。そうでない場合は、それに応じて計画を更新してください。

3)STANDERED EDITIONを使用しているため、すべての操作がオフラインで行われています。しかし、SORT_IN_TEMPDBオプションがREBUILD/REORGANIZEで使用されているかどうかも確認してください。

4)(3)の答えが「いいえ」の場合:「実際のDBログサイズが増加し、tempdbについて何も言及していないため、最も可能性が高いです」次に、(5)で述べたチェックを確認した後、そのオプションの使用を検討してください。 。

5)(3)の答えが「はい」の場合:「ありそうもない」しかし、そうである場合は、Tempdb構成が正しく行われているかどうかも確認する必要があることを意味します。お気に入り、

    Does it have more than one LDF and MDF file? if no have atlease 2 for each.

    Are those files are set to increase at right amount instead of default 10mb?       
    if default then start with the 1024MB increament. gradually you should find the 
    sweet spot.

    Are those Files are ristricted to some size? if so check the disk size where the 
    files are and set accordingly.

    Even If your Tempdb is not located on Seperate Disk, from the disk Actual DB is    
    on, making sure above checks is good practice AMD sure help you.

6)ログの縮小操作は、やり直してもREBUILD/REORGANIZEがエンジェルではないのと同じ方法でやれば、悪魔ではありません。 DB全体のREBUILD/REORGANIZEが本当に必要かどうかを確認しますか?毎週の場合もあれば、3日ごとにうまくいく場合もあります。

上記を試していくつかの結果が得られたら、統計に関する次のステップ/提案を検討させていただきます。上記の手順があなたの懸念を完全に解決することは期待していませんが、そうです、それらは明らかに状況を改善します。

3
Anup Shah
  • 1-トランザクションログをより頻繁にバックアップし、トランザクションログのバックアップを15分ごと、24 x 7、またはアクティビティが多い場合はさらに頻繁に実行するように設定することで、成長をより適切に制御できる場合があります。


  • 2-完全復旧モデルでは、すべての一括操作が完全にログに記録されます。ただし、一括操作のためにデータベースを一時的に一括ログ復旧モデルに切り替えることにより、一連の一括操作のログを最小限に抑えることができます。最小限のロギングは、フルロギングよりも効率的であり、大規模なバルク操作がバルクトランザクション中に利用可能なトランザクションログスペースをいっぱいにする可能性を減らします。ただし、最小限のロギングが有効になっているときにデータベースが損傷または失われた場合、データベースを障害点まで回復することはできません。
  • 3-スクリプトのような別の再構築プロセスを使用すると、よりよい支援が得られます。これらにより、実行を再構築/再編成する方法をより細かく制御できます。これが link で、必要なスクリプトをサポートします。
3
Up_One