SQL Server/SQL Server Tip

SQL Server 트랜잭션 로그 아키텍처(2/4) – 트랜잭션 로그 물리 아키텍처

SungWookKang 2015. 7. 20. 11:58
반응형

SQL Server 트랜잭션 로그 아키텍처(2/4)

– 트랜잭션 로그 물리 아키텍처

 

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

 

트랜잭션 로그는 데이터베이스의 무결성 보장 및 복구를 위해 사용된다. 물리적 아키텍처를 이해하면 트랜잭션 로그를 보다 효울적으로 관리 할 수 있다.

 

데이터베이스의 트랜잭션 로그는 하나 이상의 물리적 파일에 매핑 된다. 개념상으로 로그 파일은 로그 레코드의 문자열이다. 실제 로그 레코드의 시퀀스는 트랜잭션 로그를 구현하는 물리적 파일 집합에 효율적으로 저장 된다.

 

SQL Server 데이터베이스 엔진은 내부적으로 각 물리 로그 파일을 여러 개의 가상 로그 파일로 나눈다. 가상 로그 파일의 크기는 고정되어 있지 않으며 물리 로그 파일에 대해 고정된 수의 가상 로그 파일 있는 것도 아니다.

데이터베이스 엔진은 가상 로그 파일을 만들거나 확장 할 때 로그 파일의 크기를 선택 한다. 데이터베이스 엔진은 적은 수의 가상 파일을 유지하려고 한다. 로그 파일 확장 후 가상 로그파일 크기는 기존 로그 크기와 새 파일 증가 크기를 합한 크기 이다.

 

관리자가 가상 로그 파일의 크기 또는 수를 구성하거나 설정 할 수 없다.

 

가상 로그 파일이 많이 생성 될수록 데이터베이스 시작 뿐만 아니라 백업 및 복원 작업이 느려질 수 있다. 따라서 필요한 최대 크기만큼 Size 값을 할당하고 증가시 growth_increment 값을 비교적 크게 지정하는 것이 좋다.

 

로그 파일 증가 및 확장은 스토리지의 환경에 따라 다르므로 반드시 본인이 관리하는 스토리지의 특성 및 비즈니스 성향을 고려하여 정하도록 한다.

 

트랜잭션 로그 파일은 순환 파일이다. 한 개의 물리 파일에 4개의 가상 로그 파일이 있다고 가정 하였을 때 데이터베이스가 생성될 때 물리 로그파일의 시작 부분에서 논리 로그 파일이 시작 된다. 새 로그 레코드는 논리 로그의 끝 부분에 추가되며 물리 로그의 끝 방향으로 확장 된다.

로그잘림을 수행 하면 모든 레코드가 MinLSN(최소 복구 로그 시퀀스 번호)앞에 있는 가상 로그에 대한 공간이 확보 된다. MinLSN은 데이터베이스 롤백에 필요한 가장 오래된 로그 레코드의 로그 시퀀스 번호이다.

 

 

다음 그림은 논리 로그의 끝 부분이 물리 로그 파일의 끝 부분에 도달하면 새 로그 레코드는 물리 로그 파일의 시작 부분으로 순환한다. 이 순환은 논리 로그 끝 부분이 논리 로그의 시작 부분에 도달하지 않는 한 계속 반복 된다.

 

 

기존 레코드가 자주 잘리면 로그가 가득 차지 않는다. 그러나 논리 로그의 끝 부분이 논리 로그의 시작 부분에 도달하면 로그가 가득 차게 된다. 이때 파일 증가 설정이 되어 있으면 물리적으로 로그 파일을 확장하고 논리 로그가 생성된다. 만약 물리적인 공간이 부족하여 증가를 하지 못하게 되면 9002 오류가 발생 한다.

 

로그에 물리 로그 파일이 여러 개 있으면 논리 로그는 모든 물리 로그 파일을 거친 후 첫 번째 물리로그 파일의 시작 부분으로 순환된다.

 

가상 로그 파일(VLF)에 대한 성능은 다음 아티클을 참고 한다.

VLF 환경과 성능 : http://sqlmvp.kr/140164396941

 

[SSMS에서 로그 파일 추가 및 증가 옵션 수정]

[데이터베이스 속성] – [파일] 탭에서 추가 버튼을 이용하여 로그 파일을 추가 할 수 있으며 자동 등가의 속성을 설정 할 수 있다.

 

 

[가상 로그 활성 상태 보기]

다음 스크립트를 실행 하면 현재의 가상 로그파일을 확인 할 수 있다. Status 값이 2인 상태가 현재 활성화된 가상 로그 이며 이론상 status 값이 한 개만 존재하는 것이 좋다.

dbcc loginfo(SW_TEST)

 

 

 

[참고 자료]

http://msdn.microsoft.com/ko-kr/library/ms179355(v=sql.105).aspx

http://sqlmvp.kr/140164396941

 

 

2013-04-17 / 강성욱 / http://sqlmvp.kr

 

반응형