다음을 통해 공유


버퍼 풀 검사를 트리거하는 작업은 대용량 메모리 컴퓨터에서 느리게 실행될 수 있습니다.

이 문서에서는 대용량 메모리 컴퓨터에서 SQL Server 버퍼 풀을 검사하는 데 시간이 오래 걸리는 방법을 설명합니다.

적용 대상: SQL Server
원래 KB 번호: 4566579

증상

Microsoft SQL Server의 특정 작업은 버퍼 풀(메모리에 데이터베이스 페이지를 저장하는 캐시) 검사를 트리거합니다. RAM(1TB 이상의 메모리)이 많은 시스템에서 버퍼 풀을 검사하는 데 시간이 오래 걸릴 수 있습니다. 이렇게 하면 검사를 트리거한 작업이 느려집니다.

버퍼 풀 검사를 발생시키는 작업

버퍼 풀 검색을 트리거할 수 있는 몇 가지 작업은 다음과 같습니다.

  • 데이터베이스 시작
  • 데이터베이스 종료 또는 다시 시작
  • AG 장애 조치(failover)
  • 데이터베이스 제거(삭제)
  • 데이터베이스에서 파일 제거
  • 전체 또는 차등 데이터베이스 백업
  • 데이터베이스 복원
  • 트랜잭션 로그 복원
  • 온라인 복원
  • DBCC CHECKDB 또는 DBCC CHECKTABLE 작업

오류 로그는 검색에 오랜 시간이 걸렸다는 것을 보여줍니다.

SQL Server 2016 SP3, SQL Server 2017 CU23SQL Server 2019 CU9부터 버퍼 풀 검색에 오랜 시간(10초 이상)이 걸렸다는 오류 메시지가 SQL Server 오류 로그에 추가되었습니다.

버퍼 풀 검색에는 데이터베이스 ID 7, 명령 'BACKUP DATABASE', 작업 'FlushCache', 검색된 버퍼 115, 총 반복 버퍼 204640239, 대기 시간 0ms가 소요되었습니다. 자세한 내용은 'https://go.microsoft.com/fwlink/?linkid=2132602'를 참조하세요.

긴 검사를 진단하는 확장 이벤트

또한 동일한 빌드 SQL Server 2016 SP3, SQL Server 2017 CU23SQL Server 2019 CU9부터 긴 버퍼 풀 검색을 식별하는 데 도움이 되는 buffer_pool_scan_complete 확장 이벤트가 도입되었습니다.

검색이 1초 이상 걸리는 경우 이벤트를 사용하도록 설정하면 XEvent가 다음과 같이 기록됩니다.

name database_id elapsed_time_ms command operation scanned_buffers total_iterated_buffers
buffer_pool_scan_complete 7 1308 BACKUP DATABASE FlushCache 243 19932814

참고 항목

임계값은 XEvent에 있으므로 더 세분화된 정보로 정보를 캡처할 수 있습니다.

해결 방법

SQL Server 2022 이전에는 이 문제를 제거할 방법이 없었습니다. 버퍼 풀에서 클린 버퍼(DBCC DROPCLEANBUFFERS)를 삭제하면 성능이 크게 저하될 수 있으므로 버퍼 풀을 지우는 작업을 수행하지 않는 것이 좋습니다. 메모리에서 데이터베이스 페이지를 제거하면 후속 쿼리 실행이 디스크의 데이터베이스 파일에서 데이터를 다시 읽습니다. 디스크 I/O를 통해 데이터에 액세스하는 이 프로세스로 인해 쿼리 속도가 느려집니다.

SQL Server 2022에서는 버퍼 풀 검사가 여러 코어를 활용하여 병렬 처리되므로 이 문제가 완화됩니다. 버퍼가 800만 개 미만인 경우 직렬 검색이 계속 사용되는 800만 버퍼(64GB)당 하나의 작업이 있습니다. 자세한 내용은 버퍼 풀 병렬 검사를 시청하세요.

자세한 정보

큰 버퍼 풀에서 발생할 수 있는 문제에 대한 자세한 내용은 SQL Server: 대형 RAM 및 DB 검사점을 참조 하세요.