Проблемы с взаимодействием между обработкой в пакетном режиме и моделью памяти большой страницы
Эта статья поможет устранить проблемы производительности и стабильности, возникающие при использовании пакетной обработки в columnstore и rowstore с большой моделью памяти страницы в SQL Server.
Исходная версия продукта: SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017, SQL Server 2019, SQL Server 2022
Исходный номер базы знаний: 3210239
Симптомы
В экземпляре SQL Server в качестве флага запуска используется флаг трассировки 834 или флаг трассировки 876 . Возможно, вы сделали эту операцию, чтобы включить выделение больших страниц диспетчером памяти SQL Server для повышения производительности 64-разрядного экземпляра.
Вы используете индексы columnstore или пакетную обработку в rowstore.
В этом сценарии возникает одна или несколько следующих проблем:
Ошибка планировщика и связанные дампы памяти в журнале ошибок SQL Server.
Запросы, использующие обработку пакетного режима, могут столкнуться с серьезными проблемами производительности.
Исключения нарушений доступа и связанные дампы памяти в журнале ошибок SQL Server.
При запуске
sp_createstats
может появить следующее сообщение об ошибке:There is insufficient system memory in resource pool 'default' to run this query
Обходное решение
Чтобы устранить эти проблемы, попробуйте либо один из следующих двух методов:
Отключите модель памяти большой страницы, удалив флаг трассировки 834 (
-T834
) из параметров запуска SQL Server в экземпляре SQL Server. По завершении этого шага SQL Server перестает использоватьlarge page
модель памяти и возвращается кconventional
модели илиlock pages
модели памяти.Если в SQL Server не используются индексы columnstore и вы испытываете описанные симптомы, вы можете отключить пакетный режим в хранилище строк на уровне базы данных с помощью
ALTER DATABASE SCOPED CONFIGURATION SET BATCH_MODE_ON_ROWSTORE = OFF
. Дополнительные сведения см. в статье ALTER DATABASE SCOPED CONFIGURATION.