Ознаки
Коли забагато одночасних вставлень відбувається в тому ж відро хеш-пам'яті, або для кеша планів SQL Server план, що досягає її обмеження 160 036, відбувається сильне твердження на SOS_CACHESTORE spatlock. У цій ситуації в Microsoft SQL Server відбувається високе використання ЦП.
Причина
Ця проблема виникає, коли кеш плану SQL Server досягне обмеження для входу, і плани, які мають низьку вартість, слід виселити, щоб вставити нові плани. Це призводить до значних розбратів SOS_CACHESTORE spacklock, що забезпечує синхронізацію для відповідних таблиць для хеш-планів сервера SQL Server.
Спосіб вирішення
Відомості про Сукупне оновлення
Ця проблема була спочатку зафіксоване в цьому сукупному оновленні сервера SQL Server.
Кожне нове Сукупне оновлення для SQL Server містить усі поточні виправлення та всі виправлення системи безпеки, які були включені до попереднього сукупного оновлення. Ознайомтеся з найновішими сукупними оновленнями для сервера SQL Server:
Додаткові відомості
Кеш плану має два обмеження: загальний розмір і загальна кількість усіх планів. Обмеження розміру та кількості вхідних даних описані в цьому білому документі:
Планування внутрішніх органів кеша
Максимальна кількість елементів, які може містити кеш плану, у чотири рази більше відповідних значень. Ви можете перевірити цю інформацію, виконавши наведені нижче запити.
select name, type, buckets_count
from sys.dm_os_memory_cache_hash_tables
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
select name, type, pages_kb, entries_count
from sys.dm_os_memory_cache_counters
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
Наприклад, у системах 64, кількість відповідних сегментів для кеша плану SQL Server – 40 009. Таким чином, Максимальна кількість елементів, які можуть поміститися в кеші плану SQL Server, є 160 036.
Якщо у вас є робоче навантаження, що використовує різні спеціальні запити, цей ліміт може стати вузьким місцем. Зміни, внесені цим виправленням, відповідають цій ситуації. Після інсталяції цього виправлення та ввімкнення зміни за допомогою позначки трасування під час запуску "-T 174", кількість ковша збільшено до 160 001 в системах 64-bit. Кеш плану може містити не більше 640 004 планів.
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "застосовується до".