Share via


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

SQL Server データベースのトランザクション ログは、必要に応じて、その物理ログ ファイルを物理的に圧縮または展開することができます。 このトピックでは、SQL Server のトランザクション ログ サイズの監視、トランザクション ログの圧縮、トランザクション ログ ファイルの追加と拡大、tempdb トランザクション ログ増加率の最適化、トランザクション ログ ファイルのサイズ拡大の管理の方法について説明します。

このトピックの内容

  • ログ領域の使用量の監視

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

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

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

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

ログ領域の使用量の監視

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

重要な注意事項重要

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

[先頭に戻る]

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

物理ログ ファイルの物理サイズを削減するには、ログ ファイルを圧縮する必要があります。 トランザクション ログ ファイルに不要な未使用領域が含まれていることがわかっている場合にはこの方法が有効です。 ログ ファイルの圧縮を実行できるのは、データベースがオンラインで、1 つ以上の仮想ログ ファイルが解放されている間だけです。 場合によっては、次のログの切り捨てまでログを圧縮できないことがあります。

注意

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

ログ ファイルを圧縮すると、論理ログのどの部分も保持しない 1 つまたは複数の仮想ログ ファイル (つまり、非アクティブな仮想ログ ファイル) が削除されます。 トランザクション ログ ファイルを圧縮すると、ログ ファイルが目的のサイズにできるだけ近いサイズに縮小されるように、非アクティブな仮想ログ ファイルがログ ファイルの末尾から削除されます。

データベース ファイルを圧縮せずにログ ファイルを圧縮するには

ログ ファイルの圧縮イベントを監視するには

To monitor log space

注意

データベースおよびログ ファイルの圧縮は、自動的に行われるように設定できます。 ただし、自動圧縮は推奨されず、autoshrink データベース プロパティは既定で FALSE に設定されています。 autoshrink を TRUE に設定すると、ファイル領域の 25% を超える領域が未使用の場合にのみ、自動圧縮によってファイルのサイズが縮小されます。 ファイルは、ファイル領域の 25% のみが未使用領域になるサイズ、またはファイルの元のサイズの、どちらか大きい方のサイズまで圧縮されます。 autoshrink プロパティの設定の変更については、「データベースのプロパティの表示または変更」([オプション] ページの [自動圧縮] プロパティを使用する場合) または「ALTER DATABASE の SET オプション (Transact-SQL)」(AUTO_SHRINK オプションを使用する場合) を参照してください。

[先頭に戻る]

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

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

  • データベースにログ ファイルを追加するには、ALTER DATABASE ステートメントの ADD LOG FILE 句を使用します。 ログ ファイルを追加すると、ログを大きくすることができます。

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

[先頭に戻る]

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

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

[先頭に戻る]

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

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

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

  • 拡張増分値で変更するには、FILEGROWTH オプションを使用します。 0 は、自動拡張がオフで、領域を追加できないことを示します。 ログ ファイルの自動拡張の増分値が小さい場合も、パフォーマンスが低下することがあります。 ログ ファイルの拡張増分値は、拡張を頻繁に行わなくても済むように十分な大きさにする必要があります。 通常は、既定の拡張増分値 (10%) が適しています。

    ログ ファイルのファイル拡張プロパティを変更する方法については、「ALTER DATABASE (Transact-SQL)」を参照してください。

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

[先頭に戻る]

関連項目

参照

BACKUP (Transact-SQL)

概念

満杯になったトランザクション ログのトラブルシューティング (SQL Server エラー 9002)