트랜잭션 로그 여유 공간 모니터링

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

SQL Server에서 발생하는 트랜잭션은 모두 트랜잭션 로그에 기록된다. 간혹 트랜잭션 로그 공간이 가득 차서 데이터베이스 운영에 문제가 발생하는 경우가 있다.

 

다음 스크립트를 사용하여 주기적으로 트랜잭션 로그 공간을 모니터링 하여 안정적인 운영을 할 수 있도록 하자.

 

SELECT name

, db.log_reuse_wait_desc

, ls.cntr_value AS size_kb

, lu.cntr_value AS used_kb

, CAST(lu.cntr_value AS FLOAT) / CAST(ls.cntr_value AS FLOAT)

AS used_percent

, CASE WHEN CAST(lu.cntr_value AS FLOAT) / CAST(ls.cntr_value AS FLOAT) > .5 THEN

CASE

/* tempdb special monitoring */

WHEN db.name = 'tempdb'

AND log_reuse_wait_desc NOT IN ('CHECKPOINT', 'NOTHING') THEN 'WARNING'

/* all other databases, monitor foor the 50% fill case */

WHEN db.name <> 'tempdb' THEN 'WARNING'

ELSE 'OK'

END

ELSE 'OK' END

AS log_status

FROM sys.databases db

JOIN sys.dm_os_performance_counters lu

ON db.name = lu.instance_name

JOIN sys.dm_os_performance_counters ls

ON db.name = ls.instance_name

WHERE lu.counter_name LIKE 'Log File(s) Used Size (KB)%'

AND ls.counter_name LIKE 'Log File(s) Size (KB)%'

 

 

현재 스크립트에서는 사용률 50% 한도는 체크하고 있다. 다음 구문에서 사용자 요구사항을 수정하여 사용한다.

CASE WHEN CAST(lu.cntr_value AS FLOAT) / CAST(ls.cntr_value AS FLOAT) > .5 THEN

 

 

[참고자료]

http://blogs.msdn.com/b/sqlcat/archive/2009/12/14/monitoring-free-space-in-tempdb-transaction-log.aspx

 

 


강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 14466
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 8885
1914 SQL Server 메모리 병목 현상 식별 jevida(강성욱) 2016.10.13 1956
1913 SQL Server 시작 옵션 사용 jevida(강성욱) 2016.10.13 1918
1912 Ring buffer를 활용한 External Memory Pressure 확인 jevida(강성욱) 2016.10.12 1356
1911 Memory Pressure jevida(강성욱) 2016.10.12 1165
1910 64비트 버전의 SQL Server 버퍼 풀 메모리 페이지 수 줄이는 방법 jevida(강성욱) 2016.10.12 2772
1909 누락된 공유 잠금 (Missing Shared Locks) jevida(강성욱) 2016.10.12 1600
1908 Ad Hoc Distributed Queries 옵션 jevida(강성욱) 2016.10.12 3362
1907 높은 MAXDOP은 쿼리를 느리게 만들 수 있는가? jevida(강성욱) 2016.10.12 1385
1906 변경된 테이블 이름 복구하기 jevida(강성욱) 2016.10.12 1361
1905 Sys,dm_exec_connections jevida(강성욱) 2016.10.12 2093
1904 SQL Server 시작 매개 변수 설정 jevida(강성욱) 2016.10.12 2570
1903 AFTER 트리거를 INSTEAD OF 트리거로 변경 후 효율성 향상 jevida(강성욱) 2016.10.12 2022
1902 쿼리 대기 옵션 jevida(강성욱) 2016.10.12 1621
1901 Index create memory 설정 jevida(강성욱) 2016.10.12 1318
1900 Min memory per query 옵션 jevida(강성욱) 2016.10.12 1812
1899 SQL Server 에디션 다운그레이드와 제한된 기능 확인 jevida(강성욱) 2016.10.12 2171
1898 Downgrade from SQL Server Ent to Std Edition jevida(강성욱) 2016.10.12 1378
» 트랜잭션 로그 여유 공간 모니터링 jevida(강성욱) 2016.10.12 1446
1896 SQL Server가 서비스 격리를 처리하는 방법 jevida(강성욱) 2016.10.12 1176
1895 쿼리 매개변수화 확인하기 jevida(강성욱) 2016.10.12 1478





XE Login