none
SQLServer2014 データベースの肥大化 RRS feed

  • Question

  • 以下環境へサーバを構築しております。

    ・Windows Server 2012 R2 64bit
     CPU:12core
     メモリ:48GB
    ・SQLServer2014 Enterprise

    1月末頃より、データベース容量が増加し始めております。

       1月30日
        C:\Program Files\Microsoft SQL Server:13.8GB

       3月5日
        C:\Program Files\Microsoft SQL Server:41.5GB

    去年の4月より稼働を開始し、11月頃より安定期に入っており、
    データが30GBも肥大化する要因が業務的には思い当たりません。
    ※8月~9月が一番データが多かった時期で、その時を含めて、13.8GBなのに、
     その後、30GB近くも増える理由が見当たりませんでした。
    ※また、レコードも画像等、サイズが肥大化する内容を含んでいる訳ではないです。

    ■質問事項
     ・肥大化の要因となる事象、ご存じの方いらっしゃらればご教示頂けますでしょうか。
      ※一つ一つ調べていこうと思ってます。

     ・テーブル毎に、どのテーブルが容量を使用しているか、調べていくべきなのでしょうか。
      調査方法等、今までのご経験からアドバイス頂ければ幸いです。

    ※尚、多角的に調査を進めており、本フォーラムでも有益な情報を頂ければと思い、投稿させて頂きました。
    Monday, March 5, 2018 1:36 AM

Answers

  • サイズが大きくなっているのが、トランザクションログファイルなのかデータファイルなのか分かりませんが、データファイルなら、各テーブルやインデックスのページ数、ページ充填率を確認してみると何が多くの領域を使っているのかは分かるかと思います。

    https://docs.microsoft.com/ja-jp/sql/relational-databases/system-dynamic-management-views/sys-dm-db-index-physical-stats-transact-sql

    インデックスを再構築して、再構築時に一時的に必要になるソート領域のためにデータファイルが拡張したものの、再構築が終わった後は単なる空き領域になっているということも考えられるかと思います。


    • Edited by MKIII Monday, March 5, 2018 2:22 AM
    • Marked as answer by nbosamohan Tuesday, March 6, 2018 6:06 AM
    Monday, March 5, 2018 2:21 AM
  • 肥大化の原因ですが、システム系のDBと業務利用で作成したデータベースどちらでしょうか。
    心配であれば、まずはどこのデータベースが肥大化しているかは確認した方がよろしいかと思います。
    確認しているのがフォルダサイズだけであればデータベースに限らずログの容量が増加している場合もあり、トランザクションログはデータ量の増加と無関係に増えている可能性があります。
     
     
    ■SSMSからテーブルごとの使用量を表示する
    単純にデータ量の増加やディスク使用率に変化がある場合の確認です。

    該当データベースを右クリックし[ レポート ] → [ 標準レポート ] → [ テーブルごとのディスク使用量 ] または [ディスク使用量]
     
     
    ■トランザクションログの確認
    以下のSQLで拡張子が.ldfのファイルの容量から確認出来ます。
     
    ------------------------------------------------
    USE [ データベース名 ]
    SELECT * FROM sys.database_files
    ------------------------------------------------
     
    対象のデータベースが完全復旧モデルの場合は、バックアップを取得するまでトランザクションログが追記されるため、自動拡張が有効の場合は肥大化しているケースがあります。

    Monday, March 5, 2018 2:50 AM

All replies

  • サイズが大きくなっているのが、トランザクションログファイルなのかデータファイルなのか分かりませんが、データファイルなら、各テーブルやインデックスのページ数、ページ充填率を確認してみると何が多くの領域を使っているのかは分かるかと思います。

    https://docs.microsoft.com/ja-jp/sql/relational-databases/system-dynamic-management-views/sys-dm-db-index-physical-stats-transact-sql

    インデックスを再構築して、再構築時に一時的に必要になるソート領域のためにデータファイルが拡張したものの、再構築が終わった後は単なる空き領域になっているということも考えられるかと思います。


    • Edited by MKIII Monday, March 5, 2018 2:22 AM
    • Marked as answer by nbosamohan Tuesday, March 6, 2018 6:06 AM
    Monday, March 5, 2018 2:21 AM
  • 肥大化の原因ですが、システム系のDBと業務利用で作成したデータベースどちらでしょうか。
    心配であれば、まずはどこのデータベースが肥大化しているかは確認した方がよろしいかと思います。
    確認しているのがフォルダサイズだけであればデータベースに限らずログの容量が増加している場合もあり、トランザクションログはデータ量の増加と無関係に増えている可能性があります。
     
     
    ■SSMSからテーブルごとの使用量を表示する
    単純にデータ量の増加やディスク使用率に変化がある場合の確認です。

    該当データベースを右クリックし[ レポート ] → [ 標準レポート ] → [ テーブルごとのディスク使用量 ] または [ディスク使用量]
     
     
    ■トランザクションログの確認
    以下のSQLで拡張子が.ldfのファイルの容量から確認出来ます。
     
    ------------------------------------------------
    USE [ データベース名 ]
    SELECT * FROM sys.database_files
    ------------------------------------------------
     
    対象のデータベースが完全復旧モデルの場合は、バックアップを取得するまでトランザクションログが追記されるため、自動拡張が有効の場合は肥大化しているケースがあります。

    Monday, March 5, 2018 2:50 AM
  • 回答ありがとうございます。

    対象テーブルが特定できました。

    アプリケーションのバグで無効データが登録後、テーブルが増加し続けておりました。

    該当テーブルは、一時領域の為、TRUNCATEする事になりました。

    ご協力頂き、ありがとうございました。

    • Marked as answer by nbosamohan Tuesday, March 6, 2018 6:06 AM
    • Unmarked as answer by nbosamohan Tuesday, March 6, 2018 6:06 AM
    Tuesday, March 6, 2018 6:05 AM
  • 回答ありがとうございます。

    対象テーブルが特定できました。

    アプリケーションのバグで無効データが登録後、テーブルが増加し続けておりました。

    該当テーブルは、一時領域の為、TRUNCATEする事になりました。

    ご協力頂き、ありがとうございました。

    Tuesday, March 6, 2018 6:05 AM