- 목적
- 성능부하테스트시 Checkpoint에 의한 IO 과다점유로 인한 SlowQuery 증가 확인
- 적정수준의 Checkpoint IO 임계값 파악 및 설정을 통한 대규모 트래픽 유입시 안정적 환경 제공
- 테스트 환경
- 서버 및 트래픽 유입 패턴
- 32Core 64GB Mem
- 트래픽이 평소 높지 않으며 간혈적 대량 트래픽 발생 가정
- 더미데이터
- Ostress 부하 (-n100 -r100000)
- 9:1 Insert/Update 호출
- Insert : @MaxSeq+(abs(Checksum(newid())) % @MaxSeq)
- Identity (순차) 증가시 latch 지연 영향 발생 가능성을 줄이기 위함
- Update : @MaxSeq-(abs(Checksum(newid())) % @MaxSeq)
- 테스트
Perfmon 수집 지표
테스트 내용 (일부)
- 테스트 결과
- Checkpoint IO 설정
- IO 제한을 통한 DISK 병목현상이 발생하지 않아 안정적으로 elapsed time이 나옴
- 라이브 반영시 일/주/월/년단위 Checkpoint, Read/Write Byte와 DISK 성능 ( throughput, SAS 미러링 등)을 고려하여 적절 IO 제한 값 산정
- Indirect 설정
- 대량 데이터변경으로 인한 Background writer page의 IO 스트림이 지속 발생한 영향으로 트랜잭션 처리속도가 전체적으로 Driect 대비 하락으로 보임
- latch 대기를 확인하였어야했는데 누락되었다 (메모리내 Dirtypage 관리자의 동작에 의해..?)
- Indriect Checkpoint는 Checkpoint IO영향이 낮음
- 링크 내 하기의 문구가 있어 오해할 수 있으나 낮은 수준의 checkpoint io가 발생
-
- Indirect vs Direct 와 SQL Server 2016에서 Checkpoint 변경사항