SQL Server エンジンで実行されている Amazon RDS データベースインスタンスで想定よりも多くの領域が使用されています。この余分な領域が使用されている理由、RDS SQL Server DB インスタンスに割り当てられたディスクストレージの使用を最適化する方法を教えてください。

Amazon CloudWatch メトリックス「FreeStorageSpace」を使用して、特定の RDS DB インスタンスに利用可能なストレージ領域をモニタリングできますが、FreeStorageSpace では、SQL Server エンジンによる利用可能なストレージの消費状況はわかりません。


SQL Server データベースインスタンスの実際の物理ディスク領域の使用に関する詳細情報を収集するには、以下のクエリを実行します。
     SELECT D.name AS [database_name]
           , F.name AS [file_name]
           , F.type_desc AS [file_type]
           , CONVERT(decimal(10,2), F.size * 0.0078125) As [size_on_disk_mb]
           , CONVERT(decimal(10,2), F.max_size * 0.0078125) AS [max_size_mb]
     FROM sys.master_files AS F
     INNER JOIN sys.databases AS D
           ON F.database_id = D.database_id;

ROWS を含むファイルは、データが保存され、LOGS を含むファイルは、処理中のトランザクションを表します。

利用可能なストレージの使用を最適化する前に、SQL Server エンジンがストレージを使用する方法を知っていると便利です。SQL Server エンジンのストレージは大まかに以下のカテゴリを使用して定義されています。

  • データベースファイル
    個々のデータベースによって使用されるストレージの合計は、以下のクエリを使用して、現在アクティブなデータベース(USE [my_database] など)の行、インデックス、空き領域別に分類できます。
         EXEC sp_spaceused;
  • トランザクションログファイル
    トランザクションログに使用されるストレージの量を調べるには、以下のクエリを実行します。
         DBCC SQLPERF(LOGSPACE);
    トランザクションログには空き領域があることが想定されています。トランザクションログの空き領域が異常に大きい場合は、以下のクエリを使用することで、過度の空き領域の割り当てを解除します。
         USE [mydatabasename];
         DECLARE @minmb int;
         DECLARE @logfile nvarchar(255);
         SET @minmb = 5;
         SET @logfile = (SELECT name FROM sys.master_files WHERE type = 1 AND database_id = db_id());
         DBCC SHRINKFILE(@logfile, @minmb);
    トランザクションログの空き領域の過剰な割り当てを解除するには、ALTER DATABASE File and Filegroup Options(Transact-SQL)を使用して、目的のユーザーデータベースに適した自動拡張設定を定義します。
  • 一時データベース(tempdb)
    SQL Server の tempdb は、DB インスタンスの再起動時に再作成されるまで、自動的に拡張されます。tempdb で利用可能なストレージが大量に消費されている場合は、DB インスタンスを停止して再起動することができるメンテナンス期間を定義する必要があります。
  • データベースインデックス
    使用可能なストレージの大部分がインデックスに専用されているときは、インデックスのチューニングにより領域をいくらか節約できる場合があります。さまざまなインデックスチューニング戦略を採用すれば、sys.dm_db_index_usage_stats(Transact-SQL)動的管理ビューを実行することで、インデックスの使用状況に関する詳細な情報を収集できます。この情報は、チューニングの優先順位を評価するために役立つことがあります。たとえば、ストレージを節約するためのインデックスの削除の利点が、インデックスの欠落にかかわるパフォーマンスコストに見合うかどうか評価できます。

Amazon RDS, ストレージ, DBCC SHRINKFILE, FreeStorageSpace, 過剰なストレージ領域, tempdb, トランザクションログ, インデックスのチューニング


このページは役に立ちましたか? はい | いいえ

AWS サポートナリッジセンターに戻る

サポートが必要ですか?AWS サポートセンターをご覧ください。