SQL Server 2014 SP1에 활성 OLTP 40GB 데이터베이스가 있습니다. IO_Completion 대기, 디스크 큐 길이가 900으로 증가하고 SQL Server가 응답을 중지하면 쿼리 속도가 느려집니다. 우리가 시도한 것 :
인스턴스를 다시 시작하면 1 분 안에 동일한 방식으로 작동합니다.
두 번째 다시 시작한 후 각 tempdb 데이터 파일의 초기 크기 (16 개의 데이터 파일이 생성됨)를 변경하고 올바르게 작동하기 시작합니다.
참고 : 중간 결과 집합에 테이블 변수를 사용하고 있습니다. 이 결과 집합은 매우 작습니다.
한 달에 두 번 일어났습니다. 데이터 파일에 약간의 공간을 수동으로 추가 할 때마다 정상적으로 작동하기 시작합니다. 더 흥미로운 것은 SQL Server 2008 R2와 동일한 설정 (동일한 하드웨어, 동일한 폴더 및 파일 설정, 동일한 작업량) 및 SQL Server 2012가 제대로 작동한다는 것입니다.
영구적 인 해결책을 찾도록 도와주십시오.
모든 데이터 파일의 초기 크기는 1000MB, 현재는 1500MB입니다. 모두 동일합니다. 자동 증가는 각각 100MB입니다. 이 전에 우리는 PFS 및 GAM 페이지 경합에 직면했으며 16으로 증가하고 문제가 해결되었습니다. 두 추적 플래그 1117 및 1118이 모두 사용 가능합니다. 2 개의 NUMA 노드에서 24 개의 코어. 모든 데이터 파일이 같은 볼륨에 있습니다. SAN이없는 간단한 디스크.
인스턴스가 실제 머신에 있습니다. 테이블 변수가있는 쿼리와 해시 조인이있는 쿼리는 IO_Completion 대기를 가장 일반적으로 생성합니다.
wBob의 자세한 답변을 통해 더 자세히 검색 할 수있었습니다. 이전에 어떻게 놓쳤습니까?
데이터베이스 'tempdb'에서 파일 'templog'의 자동 증가가 사용자에 의해 취소되었거나 7704 밀리 초 후에 시간 초과되었습니다. ALTER DATABASE를 사용하여이 파일에 대해 더 작은 FILEGROWTH 값을 설정하거나 새 파일 크기를 명시 적으로 설정하십시오.
이런 유형의 문제가 발생하면 로그에서 발견했습니다. 빠른 드라이브를 분리하기 위해 TempDB를 이동하고 있습니다.