Direct /Indirect 비교
direct checkpoint
- 동작 방식 : checkpoint 수행시, 메모리 내의 모든 페이지를 탐색하는 대신, BUF 배열을 생성하고 배열 전체를(시작부터 끝)을 탐색한다.
(이 말이 , data buffer 내 정렬을 한다는 의미는 아님, 페이지들은 메모리내에 무작위로 분산)
변경된 페이지(Dirty Page)가 발견되면 해당 페이지 주변의 페이지 블럭과 함께 디스크에 기록한다.
2012 - 32개씩 / 2016- 128개씩 - 효과 : HW IO 레벨에서 페이지를 정렬하는 Elavator Seek 문제를 피할 수 있다.
- 공식 : (로그레코드 * 복구를 위한 고정시간) > 복구 시간(Recovery Interval) 설정값 = 자동 체크포인트 큐잉
- 예시) 체크 포인트 로직
Is BUF[0] Dirty - No - Skip
Is BUF[1] Dirty - Yes - Write with gather near
indirect checkpoint
- 동작방식 : 간접 체크포인트는 이 'PrepareToDirty' 로직을 활용하며, Dirty Page 관리자에 의해 관리되는 변경페이지 목록에 Dirty Page를 LSN 순으로 정렬 및 추가
분할된 목록에서 페이지 ID 오름차순으로 정렬하여 내보내고(Swap) WriteFileGather를 활용하여 변경된 블록 혹은 페이지 집합을 기록 - 효과 : 전체 버퍼 집합을 탐색하여 변경페이지를 찾는 driect 대비 관리목록만 탐색 (변경된 페이지만 기록)
- 동작 기준 : TARGET_RECOVERY_TIME 설정값 (상세 공식은 찾지 못하였으며 direct와 유사할것으로 추정)
- 권장 시스템 : 4TB 시스템 = ~5억 개의 SQL Server BUF 구조
SQL Server 2016에서의 Checkpoint 변경사항
- 기본 체크포인트 방식 : Indriect Checkpoint
- ~SQL Server 2014 는 Direct Checkpoint가 기본 설정
- 2016에서 생성된 신규 DB가 적용되는 사항
- 업그레이드되거나 이전 버전에서 복원된 DB는 기존의 설정을 유지 (자동 검사점)
- 2016 버전에서의 변화
- Direct checkpoint 부하
- 아래의 사유로 2014대비 Checkpoint page/sec의 Peak가 높아질 수 있음
- I/O의 응답 시간 임계값을 기준으로 Outstanding I/O양을 조절
- Avg. Disk sec/Write : 2014 - 20ms / 2016-50ms
- 데이터 페이지가 물리적 수준에서 연속적일 경우 단일 물리적 전송으로 통합
- max size for a transfer : 2014-256K / 2016-1M
- I/O의 응답 시간 임계값을 기준으로 Outstanding I/O양을 조절
- 아래의 사유로 2014대비 Checkpoint page/sec의 Peak가 높아질 수 있음
- InDriect checkpoint 부하
- 지속적인 백그라운드 쓰기로 인한 IO 점유가 발생할 수 있음
- 변경된 페이지에 대해 지속적으로 DISK에 쓰는 동작이 발생하며, 해당 동작을 함에도 TARGET_RECOVERY_TIME 초과시 Checkpoint 발생
- constant background writes of modified data pages vs. periodic flushes of modified pages
- 변경된 페이지에 대해 지속적으로 DISK에 쓰는 동작이 발생하며, 해당 동작을 함에도 TARGET_RECOVERY_TIME 초과시 Checkpoint 발생
- 지속적인 백그라운드 쓰기로 인한 IO 점유가 발생할 수 있음
- Direct checkpoint 부하
고찰
- 대용량 메모리 시스템의 경우 ,
- Direct Checkpoint 로직 (전체 버퍼 집합을 탐색)의 부하 수준이 클 것으로 보여 지속적으로 background Writer가 동작하는 InDriect가 좋을 것으로 보임
- 대용량이 아니며 간혈적 트래픽이 폭증하는 형태(짧은주기) 일 경우,
- 주기적 IO와 메모리내 연산을 하는 Indirect보다는 Checkpoint IO제한 + Direct checkpoint가 좋을것으로 보임
- 상기 '추가테스트사항' 확인
- 주기적 IO와 메모리내 연산을 하는 Indirect보다는 Checkpoint IO제한 + Direct checkpoint가 좋을것으로 보임
URL
'SQL Server > 개념&작업 정리' 카테고리의 다른 글
[작업] 성능부하테스트 (0) | 2022.03.23 |
---|---|
무중단 SQL Server 서버 이관 (미러링) (0) | 2022.03.16 |
라이브 환경 SQL Server Edition 업그레이드 (미러링 구성 환경) (0) | 2022.03.16 |
[SQL Server 이관] 작업 계획서 (0) | 2022.01.06 |
[SQLServer 이관] 사전준비과정 (0) | 2022.01.05 |