일괄 처리 모드 처리와 큰 페이지 메모리 모델 간의 상호 운용성 문제
이 문서에서는 SQL Server 큰 페이지 메모리 모델이 있는 columnstore 및 rowstore에서 일괄 처리 모드 처리를 사용하여 발생하는 성능 및 안정성 문제를 resolve 수 있습니다.
원래 제품 버전: SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017, SQL Server 2019, SQL Server 2022
원본 KB 번호: 3210239
증상
SQL Server instance 추적 플래그 834 또는 추적 플래그 876을 시작 플래그로 사용합니다. 64비트 instance 성능을 향상시키기 위해 SQL Server 메모리 관리자가 큰 페이지 할당을 사용하도록 설정하기 위해 이 작업을 수행했을 수 있습니다.
rowstore에서 columnstore 인덱스 또는 일괄 처리 모드 처리를 사용합니다.
이 시나리오에서는 다음 문제 중 하나 이상이 발생합니다.
SQL Server 오류 로그에서 생성되지 않는 스케줄러 오류 및 관련 메모리 덤프입니다.
일괄 처리 모드 처리를 사용하는 쿼리는 심각한 성능 문제가 발생할 수 있습니다.
SQL Server 오류 로그의 액세스 위반 예외 및 관련 메모리 덤프.
를 실행할
sp_createstats
때 다음 오류 메시지가 표시 될 수 있습니다.There is insufficient system memory in resource pool 'default' to run this query
해결 방법
이러한 문제를 완화하려면 다음 두 가지 방법 중 하나 또는 둘 다를 시도합니다.
SQL Server instance SQL Server 시작 매개 변수에서 추적 플래그 834(
-T834
)를 제거하여 큰 페이지 메모리 모델을 사용하지 않도록 설정합니다. 이 단계를 완료하면 SQL Server 메모리 모델 사용을large page
중지하고 또는lock pages
메모리 모델로 돌아갑니다conventional
.SQL Server columnstore 인덱스를 사용하지 않고 설명된 증상이 발생하는 경우 를 사용하여
ALTER DATABASE SCOPED CONFIGURATION SET BATCH_MODE_ON_ROWSTORE = OFF
데이터베이스 수준에서 rowstore에서 일괄 처리 모드를 사용하지 않도록 설정할 수 있습니다. 자세한 내용은 ALTER DATABASE SCOPED CONFIGURATION을 참조하세요.