При работе с базами данных SQL Server важно обеспечить актуальность статистики для оптимизации производительности запросов. По умолчанию SQL Server автоматически обновляет статистику, когда достигается определенный порог изменений. Однако этот порог может быть неэффективным для больших таблиц с миллионами строк.
До SQL Server 2016 порог для автоматического обновления статистики основывался на количестве изменений, внесенных в таблицу. Для таблиц с более чем 500 строк порог составлял 20% от количества строк таблицы плюс 500 изменений. Для таблиц с менее чем 500 строк порог составлял 500 изменений. Однако с увеличением числа таблиц с миллионами строк эти пороги могут быть недостаточными.
Для решения этой проблемы в SQL Server 2016 была введена функция под названием динамический порог обновления статистики. Эта функция автоматически настраивает порог обновления статистики в зависимости от размера таблицы. Для таблиц с более чем 25 000 строк применяются динамические статистики.
Например, рассмотрим таблицу с 1 миллионом строк. Перед выполнением любых задач мы можем вручную обновить статистику. После внесения 100 000 изменений в таблицу мы можем проверить, была ли обновлена статистика. Удивительно, статистика обновлена, что указывает на то, что был активирован динамический порог обновления статистики.
Важно отметить, что в более старых версиях SQL Server изменение на 10% в таблице не было достаточным для активации автоматического обновления статистики. Однако с функцией динамического порога обновления статистики процент порога уменьшается с увеличением числа строк в таблице.
Динамический порог обновления статистики не является новой функцией и доступен с SQL Server 2008 с помощью флага трассировки 2371. Этот флаг трассировки можно включить для активации динамического порога обновления статистики в SQL Server 2008 и более поздних версиях. Однако начиная с SQL Server 2016, динамический порог обновления статистики стал поведением по умолчанию.
Используя функцию динамического порога обновления статистики, администраторы баз данных могут обеспечить более частое обновление статистики в больших таблицах, что приводит к улучшению производительности запросов. Эта функция устраняет необходимость в ручном вмешательстве для обновления статистики и предоставляет более эффективное и автоматизированное решение.
Для получения дополнительной информации о функции динамического порога обновления статистики вы можете обратиться к следующей статье в блоге: Изменения в автоматическом обновлении статистики в SQL Server (флаг трассировки 2371).