일괄 처리 모드 처리와 큰 페이지 메모리 모델 간의 상호 운용성 문제
이 문서는 SQL Server에서 큰 페이지 메모리 모델을 사용하는 columnstore 및 rowstore에서 일괄 처리 모드 처리를 사용하여 발생하는 성능 및 안정성 문제를 해결하는 데 도움이 됩니다.
원래 제품 버전: SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017, SQL Server 2019, SQL Server 2022
원래 KB 번호: 3210239
증상
SQL Server 인스턴스에서는 추적 플래그 834 또는 추적 플래그 876을 시작 플래그로 사용합니다. SQL Server 메모리 관리자가 64비트 인스턴스의 성능을 향상시키기 위해 큰 페이지 할당을 사용하도록 설정하기 위해 이 작업을 수행했을 수 있습니다.
rowstore에서 columnstore 인덱스 또는 일괄 처리 모드 처리를 사용합니다.
이 시나리오에서는 다음 문제 중 하나 이상이 발생합니다.
SQL Server 오류 로그의 출력되지 않는 스케줄러 오류 및 관련 메모리 덤프입니다.
일괄 처리 모드 처리를 사용하는 쿼리는 심각한 성능 문제가 발생할 수 있습니다.
SQL Server 오류 로그의 액세스 위반 예외 및 관련 메모리 덤프
실행할
sp_createstats
때 다음과 같은 오류 메시지가 표시 될 수 있습니다.There is insufficient system memory in resource pool 'default' to run this query
해결 방법
이러한 문제를 완화하려면 다음 두 가지 방법 중 하나 또는 둘 다를 시도합니다.
SQL Server 인스턴스의 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을 참조하세요.