Перекомпиляция плана запроса - PullRequest
0 голосов
/ 10 июля 2019

Недавно мы выпустили новое индексированное представление для производства, чтобы повысить производительность конкретного запроса, и хотя производительность значительно улучшилась, мы заметили, что вызов службы иногда может занимать до одной секунды.

Я провел некоторое исследованиеи я мог видеть, что случаи, когда вызов службы занимал до секунды для выполнения, совпали с компиляцией плана запроса.После того, как я узнал, что я отслеживал его и мог видеть, что он перекомпилируется из-за обновленной статистики.

Данные в этой таблице постоянно меняются, поэтому я ожидаю, что статистика будет обновляться, поскольку включена функция автоматического создания статистики,но мне просто интересно, что люди делают в этом сценарии.Является ли подсказка запроса, такая как KEEPFIXED PLAN (в моем случае невозможной), или поможет руководство плана?

Это не такая уж большая проблема, поскольку мы увидим очень большое количество вызовов в минуту с несколькимибудучи затронутым перекомпиляцией.Это больше из любопытства.

1 Ответ

0 голосов
/ 10 июля 2019

Я бы включил асинхронное обновление статистики и посмотрел бы, сохраняется ли поведение

https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-set-options?view=sql-server-2017#auto_update_statistics_async

Если этот параметр включен, оптимизатор не ожидает обновления статистики перед составлением плана. Недостатком является то, что вы можете выполнить запрос с планом, сгенерированным с устаревшей статистикой

...