none
SQLserver2008 トランザクションログの肥大化  RRS feed

  • 質問

  • SQLserver 2008 を利用しております。日々バックアップを行っておりますが、トランザクションログをバックアップする度、ログサイズが大きくなってしまいます。

    行っている処理は以下の通りです。

    ①データバックアップ

    DECLARE @DATE varchar(1)

    SET @DATE = DATEPART(WEEKDAY,GETDATE())

    IF @DATE = '1' -- 日曜日
    BEGIN
     BACKUP DATABASE [XXXDB]
     TO  DISK = N'G:\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\XXXDB_1_ALL.bak'
     WITH NOFORMAT, INIT,  NAME = N'XXXDB-完全 データベース バックアップ',
     SKIP, NOREWIND, NOUNLOAD,  STATS = 10
    END

    IF @DATE <> '1' -- 月曜日~土曜日
    BEGIN
     BACKUP DATABASE [XXXDB]
     TO  DISK = N'G:\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\XXXDB_2_SABUN.bak' 
     WITH  DIFFERENTIAL , NOFORMAT, INIT,  NAME = N'XXXDB-差分 データベース バックアップ', 
     SKIP, NOREWIND, NOUNLOAD,  STATS = 10
    END

    ②トランザクションログバックアップ
    BACKUP LOG [XXXDB]
    TO  DISK = N'G:\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\XXXDB_0_LOG.trn'
    WITH NOFORMAT, INIT,  NAME = N'XXXDB-トランザクション ログ  バックアップ',
    SKIP, NOREWIND, NOUNLOAD, NO_COMPRESSION,  STATS = 10
    GO

    ③データ圧縮
    USE [XXXDB]

    DBCC SHRINKFILE (N'XXXDB')

    ④トランザクションログ圧縮

    USE [XXXDB]
    GO
    DBCC SHRINKFILE (N'XXXDB_log')

    上記①~④の処理を日次で行っていますが、②にてバックアップしたログサイズがDBのサイズ30GBに対して100GB以上になってしまいます。

    ログサイズ、バックアップしたログのサイズを小さくするにはどうしたらよいでしょうか。

    お教えいただければと思います。

     




    2011年6月15日 7:13

回答

  • トランザクションログのバックアップ量は、トランザクション量に依存すると思います。

    ③ のコマンドを実行時、データページの並び替えがトランザクションとして実行されると思うので、③ を実施しなければトランザクション量は減るかもしれません。

    また、クラスタ化インデックスの再構築を実施されている場合も、トランザクション量が増えると思います。

    • 回答の候補に設定 山本春海 2011年6月29日 7:10
    • 回答としてマーク 山本春海 2011年7月1日 4:14
    2011年6月16日 5:28
  • こんにちは。

    あくまで要件、トランザクション量に依るのですが、
    質問文を見る限り、1日1回は少なすぎだと思います。

    頻度を上げれば切り捨ての頻度も上がるのでファイルサイズは小さくなります。
    • 回答の候補に設定 山本春海 2011年6月29日 7:10
    • 回答としてマーク 山本春海 2011年7月1日 4:14
    2011年6月17日 22:47
  • NOBTAさんやTetsuaki Uchidaさんが仰るようにログに記録されているレコード数に依存します。
    もしbulk insert等の一括操作を行っている場合には「一括ログ」を選択することで、
    一括処理時には個々のデータ更新を記録しなくなるため、ログ領域の利用量を下げることができます。

    http://msdn.microsoft.com/ja-jp/library/ms189275.aspx

    またバックアップのサイズを小さくするだけであればバックアップ圧縮が有効かと思います。
    http://msdn.microsoft.com/ja-jp/library/bb964719.aspx

    • 回答の候補に設定 山本春海 2011年6月29日 7:10
    • 回答としてマーク 山本春海 2011年7月1日 4:14
    2011年6月20日 9:29
    モデレータ

すべての返信

  • トランザクションログのバックアップ量は、トランザクション量に依存すると思います。

    ③ のコマンドを実行時、データページの並び替えがトランザクションとして実行されると思うので、③ を実施しなければトランザクション量は減るかもしれません。

    また、クラスタ化インデックスの再構築を実施されている場合も、トランザクション量が増えると思います。

    • 回答の候補に設定 山本春海 2011年6月29日 7:10
    • 回答としてマーク 山本春海 2011年7月1日 4:14
    2011年6月16日 5:28
  • こんにちは。

    あくまで要件、トランザクション量に依るのですが、
    質問文を見る限り、1日1回は少なすぎだと思います。

    頻度を上げれば切り捨ての頻度も上がるのでファイルサイズは小さくなります。
    • 回答の候補に設定 山本春海 2011年6月29日 7:10
    • 回答としてマーク 山本春海 2011年7月1日 4:14
    2011年6月17日 22:47
  • NOBTAさんやTetsuaki Uchidaさんが仰るようにログに記録されているレコード数に依存します。
    もしbulk insert等の一括操作を行っている場合には「一括ログ」を選択することで、
    一括処理時には個々のデータ更新を記録しなくなるため、ログ領域の利用量を下げることができます。

    http://msdn.microsoft.com/ja-jp/library/ms189275.aspx

    またバックアップのサイズを小さくするだけであればバックアップ圧縮が有効かと思います。
    http://msdn.microsoft.com/ja-jp/library/bb964719.aspx

    • 回答の候補に設定 山本春海 2011年6月29日 7:10
    • 回答としてマーク 山本春海 2011年7月1日 4:14
    2011年6月20日 9:29
    モデレータ
  • こんにちは、kkkooo さん。

    MSDN フォーラムのご利用ありがとうございます。フォーラム オペレーターの山本です。
    その後いかがでしょうか。

    みなさんから参考になる有効な情報をいただいているかと思われましたので、勝手ながらわたしのほうで一旦回答としてマークさせていただきました。
    回答くださったみなさん、情報ありがとうございます。

    いただいた情報の中で、解決に役立った情報や、参考になった情報には、回答としてマークすることをお願いしています。
    今後、同じ問題でこのスレッドを参照される方にも、有効な情報がわかりやすくなるかと思いますので、ご協力よろしくお願いいたしますね。

    ご不明点などある場合には、具体的な内容を記載いただいて、ご質問を続けてくださいね。
    今後とも、MSDN フォーラムをご利用よろしくお願いいたします。それでは。
                                                                                                         
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2011年7月1日 4:19