버퍼 풀 검사를 트리거하는 작업은 대용량 메모리 컴퓨터에서 느리게 실행될 수 있습니다.
이 문서에서는 SQL Server 버퍼 풀을 검사하는 데 큰 메모리 컴퓨터에서 완료하는 데 시간이 오래 걸리는 방법을 설명합니다.
적용 대상: SQL Server
원래 KB 번호: 4566579
증상
Microsoft의 특정 작업은 버퍼 풀(메모리에 데이터베이스 페이지를 저장하는 캐시)의 검사를 트리거할 SQL Server 있습니다. RAM(1TB 이상의 메모리)이 많은 시스템에서 버퍼 풀을 검사하는 데 시간이 오래 걸릴 수 있습니다. 이렇게 하면 검사를 트리거한 작업이 느려집니다.
버퍼 풀 검사를 발생시키는 작업
버퍼 풀 검사를 트리거할 수 있는 몇 가지 작업은 다음과 같습니다.
- 데이터베이스 시작
- 데이터베이스 종료 또는 다시 시작
- AG 장애 조치(failover)
- 데이터베이스 제거(삭제)
- 데이터베이스에서 파일 제거
- 전체 또는 차등 데이터베이스 백업
- 데이터베이스 복원
- 트랜잭션 로그 복원
- 온라인 복원
DBCC CHECKDB
또는DBCC CHECKTABLE
작업
오류 로그에 따르면 검색에 오랜 시간이 걸렸습니다.
SQL Server 2016 SP3부터 SQL Server 2017 CU23 및 SQL Server 2019 CU9에서 SQL Server 오류 로그에 오류 메시지가 추가되어 버퍼 풀 검사가 10초 이상 오래 걸렸음을 나타냅니다.
버퍼 풀 검사는 데이터베이스 ID 7, 명령 'BACKUP DATABASE', 작업 'FlushCache', 검사된 버퍼 115, 반복된 총 버퍼 204640239, 대기 시간 0ms 등 14초가 걸렸습니다. 자세한 내용은 'https://go.microsoft.com/fwlink/?linkid=2132602'를 참조하세요.
긴 검사를 진단하는 확장 이벤트
또한 2016 SP3와 SQL Server 동일한 빌드부터 2017 CU23 및 SQL Server 2019 CU9를 SQL Server buffer_pool_scan_complete 확장 이벤트는 긴 버퍼 풀 스캔을 식별하는 데 도움이 되도록 도입되었습니다.
검색이 1초 이상 걸리는 경우 XEvent는 이벤트가 활성화될 때 다음과 같이 기록됩니다.
이름 | database_id | elapsed_time_ms | 명령 | 작업 | scanned_buffers | total_iterated_buffers |
---|---|---|---|---|---|---|
buffer_pool_scan_complete | 7 | 1308 | BACKUP DATABASE | FlushCache | 243 | 19932814 |
참고
임계값은 XEvent에 있으므로 더 세분화된 정보로 정보를 캡처할 수 있습니다.
해결 방법
2022년 SQL Server 이전에는 이 문제를 제거할 방법이 없었습니다. 버퍼 풀에서 클린 버퍼(DBCC DROPCLEANBUFFERS)를 삭제하면 성능이 크게 저하할 수 있으므로 버퍼 풀을 지우는 작업을 수행하지 않는 것이 좋습니다. 메모리에서 데이터베이스 페이지를 제거하면 후속 쿼리 실행이 디스크의 데이터베이스 파일에서 데이터를 다시 읽게 됩니다. 디스크 I/O를 통해 데이터에 액세스하는 이 프로세스로 인해 쿼리 속도가 느려집니다.
2022년 SQL Server 버퍼 풀 검사는 여러 코어를 활용하여 병렬화되므로 이 문제가 완화됩니다. 버퍼가 800만 개 미만인 경우 직렬 검사가 계속 사용되는 800만 버퍼(64GB)당 하나의 작업이 있습니다. 자세한 내용은 버퍼 풀 병렬 검사를 참조하세요.
추가 정보
큰 버퍼 풀에서 발생할 수 있는 문제에 대한 자세한 내용은 SQL Server: 큰 RAM 및 DB 검사점 지정을 참조하세요.
피드백
다음에 대한 사용자 의견 제출 및 보기