다음을 통해 공유


일괄 처리 모드 처리와 큰 페이지 메모리 모델 간의 상호 운용성 문제

이 문서는 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을 참조하세요.

자세한 정보