트랜잭션 로그 VLF가 성능에 얼마나 중요합니까?


답변:


17

가상 로그 파일이란 무엇입니까?

SQL Server는 각 데이터베이스의 트랜잭션 로그 파일을 '가상 로그 파일'(또는 VLF)이라고하는 더 작은 청크로 나눕니다. 이들의 주요 기능은 로그 백업에서 잘림 표시 자로 사용됩니다. 즉, SQL Server는 완전히 비어있는 VLF 만 지우고 재사용 할 수 있도록 표시합니다. MSDN에는 Transaction Log-Physical Architecture에 관한 내용이 있습니다.

VLF 수는 어떻게 결정됩니까?

로그 파일이 커질 때마다 (자동 증가 또는 수동 증가를 통해) 로그 파일의 새 섹션은 순전히 새 섹션의 크기 (기존 트랜잭션 로그는 그대로 남음)에 따라 여러 VLF로 나뉩니다. 따라서 작은 자동 증가 설정 (즉, 기본값 인 10 % 자동 증가)으로 인해 많은 수의 VLF가 생성됩니다.

많은 VLF의 의미는 무엇입니까?

많은 VLF가 발생하는 주요 문제는 다음과 같습니다.

  • 느린 복구 (복구는 완료된 트랜잭션이 데이터 페이지에 기록되고 불완전한 트랜잭션이 롤백되는 데이터베이스 복원 중 단계입니다).
  • 데이터베이스 미러링 설정에서 로그 판독기 성능이 느려집니다.
  • 데이터베이스 스냅 샷 생성 중 성능 저하 (이 기능 DBCC에는 백그라운드에서 데이터베이스 스냅 샷을 사용하여 차단하지 않고 일관성 검사를 용이하게하기위한 특정 기능도 포함됨)에 유의하십시오 .

데이터베이스에 몇 개의 VLF가 있는지 어떻게 알 수 있습니까?

DBCC LOGINFO데이터베이스의 트랜잭션 로그에서 각 VLF에 대해 1 행을 반환합니다. 이 질문 에는 서버의 모든 데이터베이스에 적용 할 수있는 유용한 스크립트가 있습니다.

VLF가 너무 많습니까?

그것은 당신이 스스로 결정해야 할 판단입니다. 내 개인적인 경험에 따르면 50 세 미만은 엉망 가치가 없으며 100 개 (또는 그 이상)는 자동 성장 설정을 수정하고 (다음 유지 관리 창에서) 로그를 축소하고 다시 자라는 정신 적 메모를합니다 (아래와 같이) .

도움! 천억 VLF가 있으며 데이터베이스 복구에는 하루 종일 걸립니다!

간단한 개요 ( Kimberly Tripp의 블로그에서 제공 ) :

  • 데이터베이스에서 유일하게 연결되어 있는지 확인하십시오 (따라서 유지 관리 기간 동안이를 수행하십시오)
  • 디스크에 백업 트랜잭션 로그 (사용 BACKUP LOG)
  • 실행 DBCC SHRINKFILETRUNCATEONLY가능한 가장 작은 크기로 로그 파일을 축소합니다.
  • ALTER DATABASE [...] MODIFY FILE [...] SIZE=newsize단일 단계로 트랜잭션 로그 백업 크기를 조정하려면 실행하십시오 **.

** 참고-로그 파일이 매우 큰 경우 (수십 GB 이상) 로그 백업이 지나치게 과도하게되지 않도록 적절한 크기의 적절한 수의 VLF를 얻기 위해 여러 단계로 크기를 조정할 수 있습니다. VLF는 잘림 단위이므로 Kim의 블로그에 자세히 설명 된대로 로그 백업 크기도 결정합니다 .


감사합니다. 여러 VLF가 데이터가 정기적으로 변경되고 많은 커밋이 수행되는 높은 OLTP 환경에서 성능을 더 확실하게 저해한다고 생각하십니까?
the_good_pony

많은 VLF는 위에서 설명한 상황 (복구, 스냅 샷, 미러링)에서만 실제로 눈에 able니다. OLTP 환경에서는 성능이 약간 저하 될 수 있지만 그 정도는 미미합니다.
Simon Righarts 20시 36 분

1
저에게있어 20 시간 이상의 회복은 저 (1,000 미만) VLF 수를 유지하는 것이 중요하다는 것을 확신시켜주었습니다.
Max Vernon

@SimonRigharts 궁금합니다. 많은 VLF가 정기적 인 트랜잭션 성능에 전혀 영향을 줍니까? 아니면 백업 및 복원에만 영향을 줍니까?
Chris Aldrich

@ChrisAldrich 트랜잭션이 VLF 경계에 이르면 트랜잭션에 약간의 오버 헤드 가 있을 수 있지만 (들리지 않은 경우) 질문에 자세히 설명되어 있듯이 실제로 영향을 알 수있는 유일한 시간 많은 VLF가 복구, 미러링 또는 스냅 샷 중입니다.
Simon Righarts
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.