미러링 구성시 미러DB의 mdf 쓰기가 더 많이 발생한다.
SQL Server
2011. 1. 23. 22:39
테스트 환경 SQL 2008 R2 ENT x64 10.50.1600
DB는 미러링에서 사용하는것으로 1개만 생성 하였습니다.
미러링 구성한 DB에서 주서버와 미러서버의 write를 확인해 보면 log write 량은 동일하지만 data write는 미러서버쪽 DB가 더 많이 발생합니다.
주서버의 DB는 checkpoint를 이용해 data를 디스크로 기록하는 반면 미러서버의 DB는 트랜잭션 처리마다 즉시 디스크에 기록합니다.
미러서버의 DB는 로그를 쓴다는 것이 트랜잭션 처리를 위해 SQL Engine에 의해 로그를 쓰는게 아니라 단지 데이터 동기화를 위해 미러링에 의해 로그 파일에 데이터를 기록하는 것으로 생각 됩니다.
@ 정리
- 미러서버의 DB에서는 checkpoint가 없지만 page writes/sec가 발생하고 있는 것이 확인 가능합니다.
그리고 checkpoint 없이 디스크로 동기화 하다 보니 주서버의 DB보다 많은 데이터를 디스크로 쓸 수 밖에 없습니다.
- 주서버의 DB에서는 Log를 쓰는걸 Log Bytes Flushed/sec를 보면 알 수 있지만 미러서버에서는 이 카운터에 값이 보이지 않습니다.
실제 미러서버 DB의 ldf가 위치한 디스크의 logical 또는 physical disk write bytes를 보면 주서버의 DB와 동일한 양의로그를 씁니다.
- 동기 모드 / 비동기 모드 모두 동일한 결과가 나타난다.
주서버(왼쪽) , 미러서버(오른쪽)
관련자료
Database Mirroring Best Practices and Performance Considerations
http://technet.microsoft.com/en-us/library/cc917681.aspx
하만철 / Ha Man-cheol