증상
SQL Server 2014 SP1(서비스 팩 1), SQL Server 2012 SP3 또는 SQL Server 2016을 설치한 후에는 서버를 다시 시작할 때까지 쿼리 성능이 느려지고, 사용 권한 (커널) 모드 CPU 사용량이 발생 합니다. 또한 많은 양의 PAGELATCH_ * 대기를 볼 수 있습니다.
해결 방법
이 문제는 SQL Server의 다음과 같은 누적 업데이트에서 해결 되었습니다.
각각의 새로운 새 누적 업데이트에는 이전 누적 업데이트에 포함 된 모든 핫픽스와 모든 보안 수정 사항이 포함 되어 있습니다. SQL Server에 대 한 최신 누적 업데이트를 다운로드 하 여 설치 하는 것이 좋습니다.
원인
SQL Server는 동적 래치 승격 및 강등 로직 (수퍼/서브 래치)을 사용 합니다. 이렇게 하면 래치에 대 한 획득 횟수와 래치 경합이 없는 경우 동일한 래치를 확보 하는 데 소요 되는 시간을 추적 하 여 SQL Server 성능 및 확장성이 향상 됩니다. 이 모델에 따라 적격 래치가 승격 (수퍼 래치) 됩니다. 힙 또는 BTree (HoBT)에 대 한 변경 내용 (삽입/업데이트/삭제)이 많은 경우 HoBT 연결 된 래치가 수퍼 래치 상태로 올라갈 수 있습니다. 그러나 수준 내리기를 자동으로 수행 되지 않습니다. 이 문서의수퍼/하위 latching 대 한 자세한 내용을 읽어 볼 수 있습니다. 이러한 HoBTs 나중에 할당이 취소 되 면 해제 된 HoBT는 다시 사용할 수 있도록 전역 캐시로 다시 이동 합니다. 해당 HOBT을 다시 사용 하는 경우에는 HoBT에 대 한 경합이 없더라도 이전에 승격 된 래치가 재사용 됩니다. CPU 오버 헤드가 증가 합니다. 이 동작은 서버가 다시 시작 될 때까지 SQL Server의 특권 (커널) 모드 CPU 사용량을 늘립니다. 일반적으로이 증가는 각 실행에 몇 마이크로초만 더 합니다. HoBTs의 확장 된 수퍼 래치 때문에 대기 중인 대량 PAGELATCH_ *도 표시 될 수 있습니다.
상태
Microsoft는 "적용 대상" 절에 나열한 Microsoft 제품에서 이 문제를 확인했습니다.