소개
Accelerated Database Recovery(이하 줄여서 ADR) 기능은 SQL Server 2019에서 처음 도입되었습니다, 목적은 SQL Server를 재시작하거나, Standby 서버로 넘어가거나, DB에 문제가 생기거나 혹은 트랜잭션 로그가 너무 커져서 로그를 지우고나 용량을 축소하는 등의 DB 복구/복원/로그잘라내기와 같은 작업에서 대용량 DB, 대용량 트랜잭션 작업 특히 장시간 수행되는 트랜잭션 작업(예를 들어 대용량 테이블의 인덱스 작업 등)이 포함되어 있는 경우에 해당 트랜잭션 작업을 다시실행(Redo)하거나 취소(Undo)하는데 매우 오랜시간이 걸리고 이로 인해 서비스를 정상화하는데 걸리는 시간에 영향을 미친다는 것입니다.
특히 MES(제조), EMR(의료) 또는 온라인 거래 시스템처럼 빠른 DB 복구와 서비스 정상화가 필요한 기업 환경에서는 중요한 요건입니다 또한 Azure와 같은 클라우드 환경에서는 더욱 필요한 기능이 될 것입니다(그래서 이 기능이 디폴트로 ON 상태이죠). 이를 위해 도입된 것이 ADR 기능이며 기본적인 기능 소개는 아래 MS 문서를 참조해서 보세요, 짧은 동영상 소개도 있습니다 그리고 한글 번역은 불편한 부분도 있으니 영문 문서와 같이 보거나 온라인 AI 번역 서비스를 이용하셔도 좋습니다.
- Accelerated Database Recovery 소개 (가속 데이터베이스 복구)
- Aceelerated Database Recovery 관리
SQL Server 2022에서 향상된 기능들
- 버전 정리(Cleaner)용 다중 스레드 지원
백그라운드로 수행되는 청소(Cleanup) 작업용 스레드가 SQL Server 인스턴스당 1개에서 DB당 1개로 변경되었습니다. 두 개 이상의 대용량 DB를 가진 경우에 도움이 되리라 예상됩니다. 그리고 해당 스레드 수를 sp_configure 명령을 이용해서 조정할 수 있도록 ‘ADR Cleaner Thread Count’ 이라는 새로운 옵션도 제공됩니다 (참고. 실제로 ADR를 사용한다면 이 옵션을 고려해야 할 것으로 보입니다, 디폴트 값이 1이네요 그리고 ADR 관련 추가 옵션도 2가지 더 보입니다.)
[코드-1] ‘ADR Cleaner Thread Count’ 서버 옵션 예제 (관련 설명은 위 MS 문서 예제를 참조하세요)
EXEC sp_configure 'ADR Cleaner Thread Count', 4
RECONFIGURE WITH OVERRIDE; - 새 확장 이벤트
‘tx_mtvc2_sweep_stats’ 라는 새로운 확장 이벤트가 추가되었습니다.
기타 아래와 같은 향상점들이 있으며 기본 설명은 위 MS 문서를 참조하시기 바랍니다.
- 사용자 트랜잭션 정리
- PVS 페이지 추적기 메모리 공간 감소
- ADR Cleaner 개선
- 트랜잭션 수준 PVS(지속형 버전 저장소)
정리
저나 저희 회사에서는 아직 ADR를 적용한 사례를 직접 접하거나 듣지는 못했습니다만 위 소개에서 정리해 드린 요건이 있거나 혹은 신규로 만드는 DB라면 ADR 기능 적용을 추천할 것 같습니다(Azure도 어짜피 디폴트니까요). ADR 적용 시에는 추가 관리 이슈가 생깁니다 적용 방법과 관리 방안에 대해서 위 MS 문서의 “관리” 항목을 꼭 참조하시기 바랍니다.
모두 건강하세요.
김정선 드림