2011-09-12 2 views
1

SQL Server 2005-08에 관한 트랜잭션 로그에 대한 쿼리가 있습니다. 트랜잭션이 트랜잭션 로그에 기록됩니다. 데이터 파일이 로그 파일에 기록되기 전에 데이터 파일에 쓰여지거나 데이터베이스에 커밋되기 전에 먼저 로그 파일에 기록됩니까?트랜잭션 로그 관련 커밋 프로세스 이해

감사합니다.

답변

4

먼저 로그 파일에 기록됩니다. 이 원칙은 Write Ahead Logging입니다.

반대의 경우 데이터가 로그 이전에 데이터 파일에 기록되면 충돌로부터 확실하게 복구 할 방법이 없습니다.

4

Martin이 말한 것처럼, 트랜잭션을 커밋하는 즉시 로그에 기록됩니다. 더티 페이지 (즉, 수정 된 데이터)는 checkpoint 프로세스 중에 비동기 적으로 데이터 파일에 기록됩니다.

트랜잭션이 성능을 크게 향상시킬 수있는 이유이기도합니다. 각 반복마다 자체적으로 삽입 문을 수행하는 긴밀한 루프가있는 경우 로그가 기록 될 때마다 각 반복이 효과적으로 디스크에 기록됩니다. 루프 외부에서 트랜잭션을 열면 나중에 트랜잭션이 커밋되기 때문에 디스크가 한 번만 치게됩니다.

+1

+1 좋은 추가 정보. 더티 페이지는 비동기 I/O와 지연 기록기 및 체크 포인트 프로세스를 게시 한 작업자가 작성할 수도 있습니다. –

관련 문제