증상
SQL Server 2016 및 2017에 ALWAYS ON AG(가용성 그룹)가 있다고 가정합니다. 보조 복제본(replica) 읽기 쿼리를 처리하는 경우 잦은 DIRTY_PAGE_TABLE_LOCK 대기로 인해 기본 복제본(replica) 성능이 훨씬 느려질 수 있습니다.
원인
이 문제는 읽기 쿼리와 다시 실행 스레드 간의 경합과 테이블이 잠겨 있기 때문에 발생합니다.
해결 방법
이 수정 사항은 SQL Server 대한 다음 업데이트에 포함되어 있습니다.
SQL Server 2016 서비스 팩 2의 누적 업데이트 1
SQL Server 2016 서비스 팩 1의 누적 업데이트 9
SQL Server 빌드 정보
SQL Server 대한 각 새 빌드에는 이전 빌드에 있던 모든 핫픽스 및 보안 수정 사항이 포함되어 있습니다. SQL Server 버전에 대한 최신 빌드를 설치하는 것이 좋습니다.
해결 방법
이 문제를 해결하려면 추적 플래그 3459를 사용하도록 설정하여 병렬 다시 실행 스레드 대신 단일 다시 실행 스레드를 사용할 수 있습니다.
추가 정보
읽기 전용 쿼리가 읽기 가능한 보조 복제본(replica) 실행 중인 경우 쿼리 스레드는 보류 중인 로그 다시 실행 작업을 적용하려고 시도하고 DIRTY_PAGE_TABLE_LOCK 대기를 사용하여 다시 실행 작업자 스레드와 공동 작업을 수행해야 합니다. 이 스레드는 동시 다시 실행 워크로드가 있는 경우 자주 생성되고 다시 실행 및 쿼리 성능이 저하될 수 있습니다. DIRTY_PAGE_TABLE_LOCK 대기와 관련된 성능 문제는 이 문서에 언급된 SQL Server 2016 SP 및 SQL Server 2017의 누적 업데이트 릴리스에서 해결됩니다.
자세한 내용은 가용성 그룹 보조 복제본(replica) 다시 실행 모델 및 성능에 대한 다음 블로그를 참조하세요.
상태
Microsoft는 "적용 대상" 절에 나열한 제품에서 이 문제를 확인했습니다.
참고 자료
Microsoft에서 소프트웨어 업데이트를 설명하는 데 사용하는 용어 에 대해 알아봅니다.