Проблема
Предположим, что вы создаете или удаляете большое количество временных таблиц в Microsoft SQL Server 2016 или 2017. Определенная рабочая нагрузка приложения делает недействительным кэш временных таблиц. Например, вы создаете временные таблицы, а затем создаете функции ALTER TABLE или CREATE INDEX, которые аннулируют кэш временных таблиц. В этой ситуации могут возникнуть следующие проблемы:
Возникает конфликт языка описания данных (DDL) в базе данных tempdb в системном каталоге sysobjvalues и возникает большое количество сеансов, ожидающих типов ожидания PAGELATCH_EX, PAGELATCH_SH и PAGELATCH_UP.
Эта ситуация также влияет на рабочую нагрузку, если количество записей превышает 4000. Однако это может варьироваться в зависимости от рабочей нагрузки. См. пример ниже.
SELECT [name], [type], [entries_count], [entries_in_use_count]
FROM sys.dm_os_memory_cache_counters
WHERE [type] = N'CACHESTORE_TEMPTABLES'Имя ввод с клавиатуры entries_count entries_in_use_count Временные таблицы & переменные таблицы CACHESTORE_TEMPTABLES < Количество> < Количество>
Решение
Эта проблема устранена в следующих накопительных обновлениях для SQL Server:
Накопительный пакет обновления 5 для SQL Server 2017
Накопительный пакет обновления 8 для SQL Server 2016 с пакетом обновления 1 (SP1)
Сведения о накопительных обновлениях для SQL Server:
Каждый новый накопительный пакет обновления для SQL Server содержит все исправления и исправления безопасности, которые входили в состав предыдущего накопительного пакета обновления. Ознакомьтесь с последними накопительными пакетами обновления для SQL Server:
Последний накопительный пакет обновления для SQL Server 2017
Последний накопительный пакет обновления для SQL Server 2016
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Ссылки
Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.