트랜잭션 로그 파일의 크기 관리Manage the size of the transaction log file

이 항목 적용 대상: 예SQL Server없습니다Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

이 항목에서는 SQL ServerSQL Server 트랜잭션 로그 크기 모니터링, 트랜잭션 로그 축소, 트랜잭션 로그 파일에 추가 또는 파일 확장, tempdb 트랜잭션 로그 증가율 최적화, 트랜잭션 로그 파일 증가 제어 등을 수행하는 방법에 대해 설명합니다.This topic covers how to monitor SQL ServerSQL Server transaction log size, shrink the transaction log, add to or enlarge a transaction log file, optimize the tempdb transaction log growth rate, and control the growth of a transaction log file.

로그 공간 사용 모니터링Monitor log space use

sys.dm_db_log_space_usage를 사용하여 로그 공간 사용을 모니터링합니다.Monitor log space use by using sys.dm_db_log_space_usage. 이 DMV는 현재 사용된 로그 공간 크기에 대한 정보를 반환하고 트랜잭션 로그 잘림을 수행해야 하는 시기를 나타냅니다.This DMV returns information about the amount of log space currently used, and indicates when the transaction log needs truncation.

로그 파일의 현재 크기 및 최대 크기, 파일의 자동 증가 옵션에 대한 정보를 보기 위해 sys.database_files에서 해당 로그 파일의 size, max_sizegrowth 열을 사용할 수도 있습니다.For information about the current log file size, its maximum size, and the autogrow option for the file, you can also use the size, max_size, and growth columns for that log file in sys.database_files.

중요

로그 디스크가 오버로드되지 않도록 하세요.Avoid overloading the log disk. 로그 저장소가 트랜잭션 로드에 대한 IOPS 및 지연 시간 요구 사항을 견딜 수 있는지 확인하세요.Ensure the log storage can withstand the IOPS and low latency requirements for your transactional load.

로그 파일 크기 축소Shrink log file size

실제 로그 파일의 크기를 줄이려면 로그 파일을 축소해야 합니다.To reduce the physical size of a physical log file, you must shrink the log file. 이는 트랜잭션 로그 파일에 사용되지 않은 공간이 포함되어 있는 경우에 유용합니다.This is useful when you know that a transaction log file contains unused space. 데이터베이스가 온라인 상태이고 하나 이상의 가상 로그 파일(VLF)에 여유 공간이 있는 경우에만 로그 파일을 축소할 수 있습니다.You can shrink a log file only while the database is online, and at least one virtual log file (VLF) is free. 경우에 따라 다음에 로그가 잘릴 때까지 로그를 축소하지 못할 수도 있습니다.In some cases, shrinking the log may not be possible until after the next log truncation.

참고

장기 실행 트랜잭션과 같이 오랜 시간 동안 VLF를 활성 상태로 유지하는 요소가 있으면 로그 축소가 제한되거나 로그를 전혀 축소하지 못할 수 있습니다.Factors such as a long-running transaction, that keep VLFs active for an extended period, can restrict log shrinkage or even prevent the log from shrinking at all. 자세한 내용은 로그 잘림을 지연시킬 수 있는 요소를 참조하세요.For information, see Factors that can delay log truncation.

로그 파일을 축소하면 논리 로그 부분이 포함되지 않은 하나 이상의 VLF(비활성 VLF)가 제거됩니다.Shrinking a log file removes one or more VLFs that hold no part of the logical log (that is, inactive VLFs). 트랜잭션 로그 파일을 축소하면 비활성 VLF가 로그 파일의 끝에서 제거되어 로그가 대략적인 대상 크기로 줍니다.When a transaction log file is shrunk, inactive VLFs are removed from the end of the log file to reduce the log to approximately the target size.

중요

트랜잭션 로그를 줄이기 전에 로그 잘림을 지연시킬 수 있는 요소를 염두에 두세요.Before shrinking the transaction log, keep in mind Factors that can delay log truncation. 로그 축소 후 저장소 공간이 다시 필요하면 트랜잭션 로그가 다시 커지고 로그 확장 작업 중에 성능 오버헤드가 발생합니다.If the storage space is required again after a log shrink, the transaction log will grow again and by doing that, introduce performance overhead during log growth operations. 자세한 내용은 이 항목의 권장 사항을 참조하세요.For more information, see the Recommendations in this topic.

로그 파일 축소(데이터베이스 파일의 축소 없이)Shrink a log file (without shrinking database files)

로그 파일 추가 또는 확장Add or enlarge a log file

디스크 공간이 충분한 경우 기존의 로그 파일을 확장하거나 일반적으로 다른 디스크에 있는 데이터베이스에 로그 파일을 추가하여 공간을 확보할 수 있습니다.You can gain space by enlarging the existing log file (if disk space permits) or by adding a log file to the database, typically on a different disk. 로그 공간이 부족하고 로그 파일을 보관하는 볼륨에 디스크 공간이 부족한 경우가 아니라면 하나의 트랜잭션 로그 파일로 충분합니다.One transaction log file is sufficient unless log space is running out, and disk space is also running out on the volume that holds the log file.

  • 로그 파일을 데이터베이스에 추가하려면 ALTER DATABASE 문의 ADD LOG FILE 절을 사용합니다.To add a log file to the database, use the ADD LOG FILE clause of the ALTER DATABASE statement. 로그 파일을 추가하면 로그가 확장될 수 있습니다.Adding a log file allows the log to grow.
  • 로그 파일을 확대하려면 ALTER DATABASE 문의 MODIFY FILE 절을 사용하여 SIZEMAXSIZE 구문을 지정합니다.To enlarge the log file, use the MODIFY FILE clause of the ALTER DATABASE statement, specifying the SIZE and MAXSIZE syntax. 자세한 내용은 ALTER DATABASE (Transact-SQL) 파일 및 파일 그룹 옵션을 참조하세요.For more information, see ALTER DATABASE (Transact-SQL) File and Filegroup options.

자세한 내용은 이 항목의 권장 사항을 참조하세요.For more information, see the Recommendations in this topic.

tempdb 트랜잭션 로그 크기 최적화Optimize tempdb transaction log size

서버 인스턴스를 다시 시작하면 tempdb 데이터베이스의 트랜잭션 로그가 자동 증가 이전의 원래 크기로 다시 조정됩니다.Restarting a server instance resizes the transaction log of the tempdb database to its original, pre-autogrow size. 이 경우 tempdb 트랜잭션 로그의 성능이 저하될 수 있습니다.This can reduce the performance of the tempdb transaction log.

서버 인스턴스를 시작하거나 다시 시작한 후에 tempdb 트랜잭션 로그의 크기를 늘려 이 오버헤드를 방지할 수 있습니다.You can avoid this overhead by increasing the size of the tempdb transaction log after starting or restarting the server instance. 자세한 내용은 tempdb Database을(를) 참조하세요.For more information, see tempdb Database.

트랜잭션 로그 파일 증가 제어Control transaction log file growth

트랜잭션 로그 파일의 증가를 관리하기 위해 ALTER DATABASE(Transact-SQL) 파일 및 파일 그룹 옵션 문을 사용합니다.Use the ALTER DATABASE (Transact-SQL) File and Filegroup options statement to manage the growth of a transaction log file. 다음에 유의하세요.Note the following:

  • 현재 파일의 크기(KB, MB, GB 및 TB 단위)를 변경하려면 SIZE 옵션을 사용합니다.To change the current file size in KB, MB, GB, and TB units, use the SIZE option.
  • 증분을 변경하려면 FILEGROWTH 옵션을 사용합니다.To change the growth increment, use the FILEGROWTH option. 값 0은 자동 증가를 사용하지 않고 추가 공간을 허용하지 않음을 나타냅니다.A value of 0 indicates that automatic growth is set to off and no additional space is permitted.
  • 로그 파일의 최대 크기(KB, MB, GB 및 TB 단위)를 제어하거나 증가를 UNLIMITED로 설정하려면 MAXSIZE 옵션을 사용합니다.To control the maximum the size of a log file in KB, MB, GB, and TB units or to set growth to UNLIMITED, use the MAXSIZE option.

자세한 내용은 이 항목의 권장 사항을 참조하세요.For more information, see the Recommendations in this topic.

권장 사항Recommendations

다음은 트랜잭션 로그 파일 작업 시 일반적으로 권장되는 사항입니다.Following are some general recommendations when you are working with transaction log files:

  • FILEGROWTH 옵션으로 설정된 대로 트랜잭션 로그의 자동 증가(자동 증가) 증분은 워크로드 트랜잭션의 요구를 앞설 수 있도록 커야 합니다.The automatic growth (autogrow) increment of the transaction log, as set by the FILEGROWTH option, must be large enough to stay ahead of the needs of the workload transactions. 로그 파일의 파일 증가분이 충분히 커야 자주 확장하는 번거로움을 피할 수 있습니다.The file growth increment on a log file should be sufficiently large to avoid frequent expansion. 트랜잭션 로그의 크기를 적절히 조정하는 좋은 방법은 다음과 같은 시간 동안 사용된 로그의 양을 모니터링하는 것입니다.A good pointer to properly size a transaction log is monitoring the amount of log occupied during:

    • 완료될 때까지 로그를 백업할 수 없기 때문에 전체 백업을 실행하는 데 필요한 시간.The time required to execute a full backup, because log backups cannot occur until it finishes.
    • 가장 큰 인덱스 유지 보수 작업에 필요한 시간.The time required for the largest index maintenance operations.
    • 데이터베이스에서 가장 큰 일괄 처리를 실행하는 데 필요한 시간.The time required to execute the largest batch in a database.
  • FILEGROWTH 옵션을 사용하여 데이터 및 로그 파일에 대해 자동 증가를 설정한 경우, 백분율은 계속 증가하는 양이기 때문에 백분율보다 크기에서 설정하는 것이 확장률을 더 잘 제어할 수 있습니다.When setting autogrow for data and log files using the FILEGROWTH option, it might be preferred to set it in size instead of percentage, to allow better control on the growth ratio, as percentage is an ever-growing amount.

    • 트랜잭션 로그는 인스턴트 파일 초기화를 활용할 수 없기 때문에 확장된 로그 증가 시간이 특히 중요합니다.Keep in mind that transaction logs cannot leverage Instant File Initialization, so extended log growth times are especially critical.
    • 모범 사례에서는 트랜잭션 로그에 대해 FILEGROWTH 옵션 값을 1,024MB 이상으로 설정하지 않습니다.As a best practice, do not set the FILEGROWTH option value above 1,024 MB for transaction logs. FILEGROWTH 옵션에 대한 기본값은 다음과 같습니다.The default values for FILEGROWTH option are:

      버전 옵션Version 기본값Default values
      SQL Server 2016(13.x)SQL Server 2016 (13.x)로 시작Starting with SQL Server 2016(13.x)SQL Server 2016 (13.x) 데이터는 64MB입니다.Data 64 MB. 로그 파일은 64MB입니다.Log files 64 MB.
      SQL Server 2005SQL Server 2005로 시작Starting with SQL Server 2005SQL Server 2005 데이터는 1MB입니다.Data 1 MB. 로그 파일은 10%입니다.Log files 10%.
      SQL Server 2005SQL Server 2005 이전Prior to SQL Server 2005SQL Server 2005 데이터는 10%입니다.Data 10%. 로그 파일은 10%입니다.Log files 10%.
  • 작은 확장 증분은 너무 많은 VLF가 생성되어 성능이 저하될 수 있습니다.A small growth increment can generate too many small VLFs and can reduce performance. 주어진 인스턴스의 모든 데이터베이스의 현재 트랜잭션 로그 크기에 대한 최적의 VLF 분포 및 필수 크기를 수행할 필수 성장 증분을 결정하려면 이 스크립트를 참조하세요.To determine the optimal VLF distribution for the current transaction log size of all databases in a given instance, and the required growth increments to achieve the required size, see this script.

  • 큰 확장 증분은 너무 적고 큰 VLF가 생성되어 이 또한 성능에 영향을 줄 수 있습니다.A large growth increment can generate too few and large VLFs and can also affect performance. 주어진 인스턴스의 모든 데이터베이스의 현재 트랜잭션 로그 크기에 대한 최적의 VLF 분포 및 필수 크기를 수행할 필수 성장 증분을 결정하려면 이 스크립트를 참조하세요.To determine the optimal VLF distribution for the current transaction log size of all databases in a given instance, and the required growth increments to achieve the required size, see this script.

  • 자동 증가를 사용하는 경우에도 쿼리의 요구 사항을 충족시킬 정도로 빠르게 커질 수 없는 경우 트랜잭션 로그가 꽉 찼다는 메시지를 받을 수 있습니다.Even with autogrow enabled, you can receive a message that the transaction log is full, if it cannot grow fast enough to satisfy the needs of your query. 확장 증분 변경에 대한 자세한 내용은 ALTER DATABASE(Transact-SQL) 파일 및 파일 그룹 옵션을 참조하세요.For more information on changing the growth increment, see ALTER DATABASE (Transact-SQL) File and Filegroup options

  • 트랜잭션 로그 파일이 동일한 파일 그룹의 데이터 파일처럼 비례 채우기를 사용하지 않기 때문에 데이터베이스에 여러 로그 파일을 저장해도 성능이 향상되지 않습니다.Having multiple log files in a database does not enhance performance in any way, because the transaction log files do not use proportional fill like data files in a same filegroup.

  • 로그 파일은 자동으로 축소되도록 설정할 수 있습니다.Log files can be set to shrink automatically. 그러나 이것은 권장되지 않으며 auto_shrink 데이터베이스 속성은 기본적으로 FALSE로 설정됩니다.However this is not recommended, and the auto_shrink database property is set to FALSE by default. auto_shrink를 TRUE로 설정하면 파일 공간의 25% 이상이 사용되지 않을 때만 자동 축소에 의해 파일 크기가 줄어듭니다.If auto_shrink is set to TRUE, automatic shrinking reduces the size of a file only when more than 25 percent of its space is unused.

관련 항목:See also

BACKUP(Transact-SQL) BACKUP (Transact-SQL)
꽉 찬 트랜잭션 로그 문제 해결(SQL Server 오류 9002) Troubleshoot a Full Transaction Log (SQL Server Error 9002)
SQL Server 트랜잭션 로그 아키텍처 및 관리 가이드의 트랜잭션 로그 백업 Transaction Log Backups in the SQL Server Transaction Log Architecture and Management Guide
트랜잭션 로그 백업(SQL Server) Transaction Log Backups (SQL Server)
ALTER DATABASE (Transact-SQL) 파일 및 파일 그룹 옵션ALTER DATABASE (Transact-SQL) File and Filegroup options