Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выход прослушанного значения за диапазон статистики  [new]
Бубыкин
Member

Откуда:
Сообщений: 1
Шолом, благородные доны, сразу перейдем к делу: все плохо.

Есть известная проблема: оптимизатор иногда жестко (бывает, даже жестоко) косячит, если первое (ака прослушанное) значение выходит за пределы собранной статистики. Например, может запросто вместо быстрого index seek по отличному индексу начать full scan. Для SQL2016 есть готовое решение в лоб: https://support.microsoft.com/en-us/help/3192154/a-non-optimal-query-plan-choice-causes-poor-performance-when-values-ou

Нет ли хоть какого-то решения для SQL2014? Пересобирать статистику чаще не предлагать: проблемная таблица - основная рабочая, растет постоянно, и всегда оказывается, что для нововставленных ключей выполняются ad-hoc запросы, которых еще нет в кеше планов (или перекомлировавшиеся). Более того, новые значения предсказуемо горячее, и прослушанными часто становятся именно они. В результате оказывается, что основная часть запросов выполняется мгновенно, но та небольшая часть, которая прослушала свежие значения ключа, портят всю картину и убивают производительность в хлам, причем в результате периодических рекомпиляций "плохих" запросов со временем становится больше до следующего обновления статистики и так по кругу.

Уснастить вообще все запросы соотвествующими хинтами, сами понимаете, не вариант. В том числе и потому, что эти запросы находятся в определении матвьюх, а в те запросы эти хинты добавить, к сожалению, невозможно (именно в обновлении матвьюх эта проблема в первую очередь и всплывает).
13 сен 17, 21:25    [20794008]     Ответить | Цитировать Сообщить модератору
 Re: Выход прослушанного значения за диапазон статистики  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Бубыкин,

Можете попробовать вернуть carnality estimator от 2012, там насколько я помню в таком же случае будет underestimate вместо overestimate.

Еще можно попробовать вот эти старые флаги Ascending Keys and Auto Quick Corrected Statistics
Но что-то пишут они себя странно ведут в новых версиях Trace Flag 2389 and the new Cardinality Estimator
13 сен 17, 22:37    [20794108]     Ответить | Цитировать Сообщить модератору
 Re: Выход прослушанного значения за диапазон статистики  [new]
iii2
Member

Откуда:
Сообщений: 202
Секционирование :-))) Гы...
Разделите таблицу на холодную и горячую части, и по горячей части считайте статистику чаще. А в момент простоя - перегоняйте данные из горячей части в холодную, соответственно пересчитав там статистику.
14 сен 17, 09:28    [20794568]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить