Улучшения tempdb в SQL Server 2016

Улучшения tempdb в SQL Server 2016

Олонцев Сергей написал отличную статью: SQL Server 2016: конфигурация tempdb во время установки

Хотелось бы продемонстрировать вам небольшую вырезку из статьи и немного дополнить:

Во время установки SQL Server 2016, теперь можно указать размер и количество файлов БД


Предлагаемое количество файлов по-умолчанию можно узнать по следующей таблице:

Ядер CPU Количество файлов в tempdb
2 2
4 4
8 8
32 8

Улучшения в производительности при работе с tempdb

Также в работу tempdb были внесены следующие изменения, направленные на оптимизацию и ускорение выполнения запросов:

  • Кэширование временных объектов позволяет запросам, которые постоянно удаляют и создают временные объекты работать быстрее и уменьшают конкуренцию за системные ресурсы. В последних версиях SQL Server можно было регулярно видеть изменения и улучшения этого механизма.
  • Уменьшена нагрузка на журнал транзакций в tempdb, снижено количество требуемых I\O операций.
  • Доработан алгоритм накладывания latch’ей при выделении страниц, уменьшено их количество.
  • При приращении tempdb теперь одновременно будет увеличен размер всех файлов (отпадает необходимость включать флаг трассировки 1117). Опция AUTOGROW_ALL_FILES включена по умолчанию и не может быть изменена. Это поможет избежать разбалансирования размеров файлов при постоянно приросте tempdb.
  • Для временных объектов идет выделение только экстентами (блоками по 8 страниц, 64 кб). Отпадает необходимость включать флаг трассировки 1118. Это также поможет в большей части случаев.

Дополнение:

Давайте рассмотрим так же как можно узнать есть ли у вас проблемы с количеством файлов tempdb. Для этого достаточно собирать данные следующего запроса:

Этим запросом мы пытаемся найти latch на системные страницы PFS, GAM, SGAM в базе данных tempdb. Если запрос ничего не возвращает или возвращает строки только с «Is Not PFS, GAM, or SGAM page», то скорее всего текущая нагрузка не требует увеличения файлов tempdb.

Дополнительно рекомендуется отслеживать счётчик производительности (Performance Monitor) на SQLServer:Databases — Transaction/sec в tempdb и если tempdb стал пропускать больше транзакций при той же нагрузке, значит вы идёте в нужном направлении.

Запись опубликована в рубрике В помощь администратору с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Войти с помощью: