トランザクション ログ ファイルのサイズの管理

物理ログ ファイルのサイズを変更することが役に立つ場合もあります。

ログ領域の使用量の監視

ログ領域の使用量は、DBCC SQLPERF (LOGSPACE) を使用して監視することができます。このコマンドは、現在使用されているログ領域の量に関する情報を返し、いつトランザクション ログを切り捨てる必要があるかを示します。詳細については、「DBCC SQLPERF (Transact-SQL)」を参照してください。ログ ファイルの現在のサイズ、最大サイズ、およびファイルの自動拡張オプションについては、sys.database_files にある、そのログ ファイルに関する sizemax_size、および growth の各列も使用できます。詳細については、「sys.database_files (Transact-SQL)」を参照してください。

重要な注意事項重要

ログ ディスクが過負荷にならないようにすることをお勧めします。

ログ ファイルのサイズの圧縮

ログの切り捨ては、ディスク領域を解放して再利用できるようにするため必要ですが、物理ログ ファイルのサイズは縮小されません。物理的なサイズを縮小するには、ログ ファイルを圧縮して、論理ログのどの部分も保持しない仮想ログ ファイル (つまり、非アクティブな仮想ログ ファイル) を 1 つ以上削除する必要があります。トランザクション ログ ファイルを圧縮すると、ログ ファイルが目的のサイズにできるだけ近いサイズに縮小されるように、非アクティブな仮想ログ ファイルがログ ファイルの末尾から削除されます。詳細については、「トランザクション ログの圧縮」を参照してください。

注意

実行時間の長いトランザクションなど、長期間にわたって仮想ログ ファイルがアクティブなままになる要因があると、ログの圧縮が制限されたり、ログがまったく圧縮できないことがあります。詳細については、「ログの切り捨てが遅れる原因となる要因」を参照してください。

詳細については、「トランザクション ログの圧縮」を参照してください。

ログ ファイルの追加または拡大

既存のログ ファイルを拡大するか (ディスク領域が十分にある場合)、別のディスク上にあるデータベースにログ ファイルを追加することによって、領域を確保することもできます。

  • データベースにログ ファイルを追加するには、ALTER DATABASE ステートメントの ADD LOG FILE 句を使用します。ログ ファイルを追加すると、ログを大きくすることができます。ファイルの追加の詳細については、「データ ファイルとトランザクション ログ ファイルの追加と削除」を参照してください。

  • ログ ファイルを拡大するには、ALTER DATABASE ステートメントの MODIFY FILE 句を使用し、SIZE および MAXSIZE 構文を指定します。詳細については、「ALTER DATABASE (Transact-SQL)」を参照してください。

tempdb トランザクション ログのサイズの最適化

サーバー インスタンスを再起動すると、tempdb データベースのトランザクション ログのサイズが、元の自動拡張前のサイズに変更されます。これにより、tempdb のトランザクション ログのパフォーマンスが低下することがあります。このオーバーヘッドは、サーバー インスタンスを起動または再起動した後、tempdb のトランザクション ログのサイズを増やすことで回避できます。詳細については、「tempdb データベース」および「tempdb のパフォーマンスの最適化」を参照してください。

トランザクション ログ ファイルのサイズの制御

トランザクション ログ ファイルのサイズの拡張を管理するには、ALTER DATABASE (Transact-SQL) ステートメントを使用します。次のことを考慮してください。

  • 現在のサイズを KB、MB、GB、および TB 単位で変更する場合は、SIZE オプションを使用します。

  • 拡張増分値で変更するには、FILEGROWTH オプションを使用します。0 は、自動拡張がオフで、領域を追加できないことを示します。

  • ログ ファイルの最大サイズを KB、MB、GB、および TB 単位で制御するか、拡張値を UNLIMITED に設定するには、MAXSIZE オプションを使用します。