- 목적
- 성능부하테스트시 Checkpoint에 의한 IO 과다점유로 인한 SlowQuery 증가 확인
- 적정수준의 Checkpoint IO 임계값 파악 및 설정을 통한 대규모 트래픽 유입시 안정적 환경 제공
- 테스트 환경
- 서버 및 트래픽 유입 패턴
- 32Core 64GB Mem
- 트래픽이 평소 높지 않으며 간혈적 대량 트래픽 발생 가정
- 더미데이터
- 50G / Seq 컬럼 클러스터 인덱스 구성
- Ostress 부하 (-n100 -r100000)
- 9:1 Insert/Update 호출
- Insert : @MaxSeq+(abs(Checksum(newid())) % @MaxSeq)
- Identity (순차) 증가시 latch 지연 영향 발생 가능성을 줄이기 위함
- Update : @MaxSeq-(abs(Checksum(newid())) % @MaxSeq)
- 캐시내 재조회가 아닌 IO를 발생하기 위함
- Insert : @MaxSeq+(abs(Checksum(newid())) % @MaxSeq)
- 9:1 Insert/Update 호출
- 서버 및 트래픽 유입 패턴
- 테스트
- 테스트 결과
- 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가 발생
- https://techcommunity.microsoft.com/t5/datacat/changes-in-sql-server-2016-checkpoint-behavior/ba-p/305342
- 시작 매개변수(-k) 다음에 검사점 속도(MB/초)를 구성하는 십진수 값을 활용하는 기능을 제공합니다. 간접 검사점을 사용하도록 구성되지 않은 모든 데이터베이스에 영향을 미칩니다
- https://techcommunity.microsoft.com/t5/datacat/changes-in-sql-server-2016-checkpoint-behavior/ba-p/305342
- 링크 내 하기의 문구가 있어 오해할 수 있으나 낮은 수준의 checkpoint io가 발생
- 대량 데이터변경으로 인한 Background writer page의 IO 스트림이 지속 발생한 영향으로 트랜잭션 처리속도가 전체적으로 Driect 대비 하락으로 보임
- Checkpoint IO 설정
- Indirect vs Direct 와 SQL Server 2016에서 Checkpoint 변경사항
'SQL Server > 테스트 (+스크립트)' 카테고리의 다른 글
[테스트] 백업과 LSN 관계 (backupset) (0) | 2022.05.03 |
---|---|
통계용 DB (스크립트 기반 Logshipping) 구성 (0) | 2021.09.14 |
분리보관용 서버 구성 (파티셔닝 적용 및 관리) (0) | 2021.09.14 |
도메인 독립 AlwaysOn 구성 (AD 미조인) (0) | 2021.06.27 |
AlwaysOn with Basic 도입 방안 (0) | 2021.06.26 |