Рекомендуемые обновления и параметры конфигурации для SQL Server с рабочими нагрузками с высокой производительностью

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

Исходная версия продукта: SQL Server 2014 г., SQL Server 2012 г.
Исходный номер базы знаний: 2964518

В этой статье описаны улучшения производительности и изменения, доступные для версий SQL Server 2014 и SQL Server 2012 через различные обновления продуктов и параметры конфигурации. Эти обновления можно применить, чтобы повысить производительность экземпляра SQL Server. Степень улучшения будет зависеть от различных факторов, включая шаблон рабочей нагрузки, точки состязания, макет процессора (количество групп процессоров, сокетов, узлов NUMA, ядер в узле NUMA) и объем памяти, присутствующих в системе. SQL Server группа поддержки использовала эти обновления и изменения конфигурации для достижения разумного повышения производительности рабочих нагрузок клиентов, которые использовали аппаратные системы с несколькими узлами NUMA и большим количеством процессоров. Группа поддержки продолжит обновлять эту статью другими обновлениями в будущем.

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

Примечание.

В SQL Server 2016 и более поздних версиях многие флаги трассировки, упомянутые в этой статье, являются поведением по умолчанию, и вам не нужно включать их в этих версиях.

Рекомендации сгруппированы в три таблицы следующим образом:

  • В таблице 1 содержатся наиболее часто рекомендуемые обновления и флаги трассировки для масштабируемости в высококлассных системах.
  • В таблице 2 содержатся рекомендации и рекомендации по дополнительной настройке производительности.
  • В таблице 3 содержатся дополнительные исправления масштабируемости, которые были включены вместе с накопительным обновлением.

Таблица 1. Важные обновления и флаги трассировки для высококлассных систем

Просмотрите следующую таблицу и включите флаги трассировки в столбце Флаг трассировки после того, как убедитесь, что экземпляр SQL Server соответствует требованиям в столбце Применимые диапазоны версий и сборок.

Примечание.

  • Применимые версии и сборка указывают конкретное обновление, в котором был введен флаг изменения или трассировки. Если cu не указан, включаются все CU в пакете обновления.

  • Неприменимая версия и сборка указывают на конкретное обновление, в котором флаг изменения или трассировки стал поведением по умолчанию. Таким образом, просто применения этого обновления будет достаточно, чтобы получить преимущества.

Важно!

При включении исправлений с флагами трассировки в Always On средах следует учитывать, что необходимо включить флаги исправления и трассировки для всех реплик, входящих в группу доступности.

Сценарий и симптом, которые следует учитывать Флаг трассировки Применимые версии и диапазоны сборок Неприменимая версия и диапазоны сборок Статья базы знаний или ссылка на блог с дополнительными сведениями
  • Вы столкнетесь с большим количеством ожиданий CMEMTHREAD.
  • SQL Server устанавливается в системах с 8 или более ядрами на сокет.
T8048
  • SQL Server 2012 RTM до текущего пакета обновления (SP)/CU
  • SQL Server 2014 RTM до SP1
  • SQL Server 2014 с пакетом обновления 2 (SP2) до текущего sp/CU
  • SQL Server 2016 RTM к текущему sp/CU
  • SQL Server 2017 RTM к текущему sp/CU
  • Вы столкнетесь с большим количеством ожиданий CMEMTHREAD.
  • SQL Server устанавливается в системах с 8 или более ядрами на сокет.
T8079 SQL Server 2014 с пакетом обновления 2 (SP2) до текущего sp/CU
  • SQL Server 2016 RTM к текущему sp/CU
  • SQL Server 2017 RTM к текущему sp/CU
  • Вы используете функции, использующие кэш пула журналов. (например, Always On)
  • SQL Server устанавливается в системах с несколькими сокетами.
T9024 Накопительный пакет обновления 3 для SQL Server 2012 с пакетом обновления 1 (SP1) до SP2 SQL Server 2014 RTM
  • SQL Server 2012 с пакетом обновления 3 (SP3) до текущей sp/CUSQL
  • Сервер 2014 с пакетом обновления 1 (SP1) до текущего sp/CU
  • SQL Server 2016 RTM к текущему sp/CU
  • SQL Server 2017 RTM к текущему sp/CU
ИСПРАВЛЕНИЕ. Высокое значение счетчика "ожиданий записи в журнал" в экземпляре SQL Server 2012 или SQL Server 2014
Экземпляр SQL Server обрабатывает тысячи сбросов подключений из-за пула подключений. T1236 Накопительный пакет обновления 9 для SQL Server 2012 с пакетом обновления 1 (SP1) — накопительный пакет обновления 2 (SP2) для SQL Server 2014 г.
  • SQL Server 2012 с пакетом обновления 3 (SP3) до текущей sp/CUSQL
  • Сервер 2014 с пакетом обновления 1 (SP1) до текущей sp/CUSQL
  • Сервер 2016 RTM для текущей sp/CU
  • SQL Server 2017 RTM к текущему sp/CU
  • Рабочая нагрузка приложения включает частое использование базы данных tempdb (создание и удаление временных таблиц или переменных таблицы).
  • Вы заметили, что запросы пользователей ожидают ресурсов страницы tempdb из-за состязания за выделение.
T1118
  • SQL Server 2012 RTM к текущему sp/CU
  • SQL Server 2014 RTM к текущему sp/CU
  • SQL Server 2016 RTM к текущему sp/CU
  • SQL Server 2017 RTM к текущему sp/CU
Улучшения параллелизма для базы данных tempdb

ПРИМЕЧАНИЕ Включите флаг трассировки и добавьте несколько файлов данных для базы данных tempdb.
  • У вас есть несколько файлов данных tempdb.
  • Сначала файлы данных имеют одинаковый размер.
  • Из-за интенсивной активности файлы tempdb сталкиваются с ростом, и не все файлы растут одновременно и вызывают состязание по выделению.
T1117
  • SQL Server 2012 RTM к текущему sp/CU
  • SQL Server 2014 RTM к текущему sp/CU
  • SQL Server 2016 RTM к текущему sp/CU
  • SQL Server 2017 RTM к текущему sp/CU
Рекомендации по сокращению состязания за выделение в базе данных tempdb SQL Server
Интенсивное SOS_CACHESTORE состязание за спин-блокировку или ваши планы часто вытеснили для нерегламентированных рабочих нагрузок запросов. T174
  • SQL Server 2012 с пакетом обновления 1 (SP1) с накопительным пакетом обновления 14 (CU) к текущему пакету обновления 1 (SP1)
  • SQL Server 2014 RTM CU6 до текущего sp/CU
Нет
  • Записи в кэше планов вытесаются из-за роста других кэшей или клерков памяти
  • Высокая загрузка ЦП из-за частой повторной компиляции запросов
T8032
  • SQL Server 2012 RTM к текущему sp/CU
  • SQL Server 2014 RTM к текущему sp/CU
Нет
Существующая статистика не часто обновляется из-за большого количества строк в таблице. T2371
  • SQL Server 2012 RTM к текущему sp/CU
  • SQL Server 2014 RTM к текущему sp/CU
Нет
  • Выполнение заданий статистики занимает много времени.
  • Не удается параллельно выполнять несколько заданий обновления статистики.
T7471 SQL Server 2014 с пакетом обновления 1 (SP1) с накопительным пакетом обновления 6 (CU6) до текущего sp/CU Нет Повышение производительности статистики обновления с помощью SQL 2014 & SQL 2016
Команда CHECKDB занимает много времени для больших баз данных.
  • T2562
  • T2549
    • SQL Server 2012 RTM к текущему sp/CU
    • SQL Server 2014 RTM к текущему sp/CU
    Нет
    Команда CHECKDB занимает много времени для больших баз данных. T2566
    • SQL Server 2012 RTM к текущему sp/CU
    • SQL Server 2014 RTM к текущему sp/CU
    Нет
    Выполнение параллельных запросов хранилища данных, которые занимают много времени компиляции, приводит к RESOURCE_SEMAPHORE_QUERY_COMPILE ожиданиям. T6498 Накопительный пакет обновления 6 для SQL Server 2014 с пакетом обновления 1 (SP1)
    • SQL Server 2014 с пакетом обновления 2 (SP2) до текущей sp/CUSQL
    • Сервер 2016 RTM для текущей sp/CU
    • SQL Server 2017 RTM к текущему sp/CU
    Вы устраняете определенные проблемы с производительностью запросов, исправления оптимизатора отключены по умолчанию. T4199
    • SQL Server 2012 RTM до с пакетом обновления 4 (SP4)
    • SQL Server 2014 RTM до последней версии
    Нет
    При использовании операций запросов с пространственными типами данных производительность снижается.
    • T6532
    • T6533
    • T6534
    • SQL Server 2012 с пакетом обновления 3 (SP3) до текущего sp/CU
    • SQL Server 2014 с пакетом обновления 2 (SP2) до текущего sp/CU
      • SQL Server 2016 RTM к текущему sp/CU
      • SQL Server 2017 RTM к текущему sp/CU
        • Запросы встречаются SOS_MEMORY_TOPLEVELBLOCKALLOCATOR и ожидания CMEMTHREAD.
        • Виртуальное адресное пространство для SQL Server процесса невелико.
        T8075
        • SQL Server 2012 с пакетом обновления 2 (SP2) CU8 до текущего sp/CU
        • SQL Server 2014 RTM CU10 до текущей sp/CU
        • SQL Server 2016 RTM к текущему sp/CU
        • SQL Server 2017 RTM к текущему sp/CU
        ИСПРАВЛЕНИЕ. Ошибка нехватки памяти, когда виртуальное адресное пространство процесса SQL Server недостаточно SQL Server
        • SQL Server устанавливается на компьютере с большим объемом памяти.
        • Создание новых баз данных занимает много времени.
        T3449
        • SQL Server 2012 с пакетом обновления 3 (SP3) до текущего sp/CU
        • SQL Server 2014 RTM CU14 к текущему CUM RTM
        • SQL Server 2014 с пакетом обновления 1 (SP1) CU7 до текущей sp/CU
        • SQL Server 2016 RTM к текущему sp/CU
        • SQL Server 2017 RTM к текущему sp/CU
        ИСПРАВЛЕНИЕ. создание базы данных SQL Server в системе с большим объемом памяти занимает больше времени, чем ожидалось

        Табл. 2. Общие рекомендации и рекомендации по повышению производительности экземпляра SQL Server

        Просмотрите содержимое статьи базы знаний или электронной документации по ресурсу и рассмотрите возможность реализации рекомендаций в столбце Рекомендуемые действия.

        Статья базы знаний/Ресурс электронной документации Рекомендуемые действия
        Настройка параметра конфигурации сервера с максимальной степенью параллелизма Используйте хранимую процедуру sp_configure, чтобы внести изменения в конфигурацию, чтобы настроить параметр конфигурации сервера max degree of parallelism для экземпляра SQL Server согласно статье Базы знаний.
        Ограничения вычислительной емкости по выпускам SQL Server выпуск Enterprise с лицензированием на сервер и клиентский доступ (CAL) ограничено 20 ядрами на экземпляр SQL Server. В модели лицензирования сервера на основе core не существует ограничений. Рассмотрите возможность обновления выпуска SQL Server до соответствующего номера SKU, чтобы использовать все аппаратные ресурсы.
        Низкая производительность в Windows Server при использовании сбалансированного плана управления питанием Просмотрите статью и обратитесь к администратору Windows, чтобы реализовать одно из решений, которые указаны в разделе "Разрешение" этой статьи.
        Вручную назначьте узлы NUMA группам K.
        Оптимизация для нерегламентированных рабочих нагрузокПРИНУДИТЕЛЬНОЙ ПАРАМЕТРИЗАЦИИ Записи в кэше планов вытесаются из-за роста других кэшей или клерков памяти. Вы также можете столкнуться с вытеснение кэша планов, когда кэш достигает максимального количества записей. Помимо флага трассировки 8032, рассмотренного выше, рассмотрите возможность оптимизации для сервера нерегламентированных рабочих нагрузок , а также параметр базы данных FORCED PARAMETERIZATION .
        Как уменьшить разбиение памяти буферного пула на страницы в SQL ServerМемория конфигурации и изменения размера в SQL Server 2012 и более поздних версиях Назначьте право пользователя Включить параметр Блокировки страниц в памяти (Windows) учетной записи запуска службы SQL. См. статью Включение функции "заблокированных страниц" в SQL Server 2012 г. Задайте максимальный объем памяти сервера примерно в 90 % от общего объема физической памяти. Убедитесь, что параметры конфигурации памяти сервера учитывают память только с узлов, настроенных для использования параметров сходства маски.
        SQL Server и большие страницы описано...Параметры настройки SQL Server при выполнении в высокопроизводительных рабочих нагрузках Рассмотрите возможность включения TF 834, если у вас есть сервер с большим объемом памяти, особенно с аналитической рабочей нагрузкой или рабочей нагрузкой хранилища данных. Помните, что TF 834 не рекомендуется использовать при использовании индексов columnstore.
        Описание параметров "количество контейнеров кэша проверка доступа" и "доступ проверка квоты кэша", доступных в хранимой процедуре sp_configure Используйте параметры конфигурации сервера проверка доступа, чтобы настроить эти значения в соответствии с рекомендациями, приведенными в статье базы знаний. Ниже приведены рекомендуемые значения для высококлассных систем.
        "количество контейнеров проверка доступа к кэшу": 256
        "квота доступа проверка кэша": 1024

        Инструкции запроса предоставления памятиALTER WORKLOAD GROUP Если у вас много запросов, которые исчерпывают большие объемы памяти, уменьшите request_max_memory_grant_percent для группы рабочей нагрузки по умолчанию в конфигурации регулятора ресурсов значение по умолчанию с 25 до меньшего. В SQL Server доступны новые параметры предоставления памяти запросам (min_grant_percent и max_grant_percent)
        Мгновенная инициализация файлов Обратитесь к администратору Windows, чтобы предоставить учетной записи службы SQL Server право пользователя "Выполнение задач обслуживания томов", как описано в разделе электронной документации.
        Рекомендации по настройке "autogrow" и "autoshrink" в SQL Server Проверьте текущие параметры базы данных и убедитесь, что они настроены в соответствии с рекомендациями, приведенными в статье Базы знаний.
        Контрольные точки базы данных (SQL Server) Рассмотрите возможность включения непрямых контрольных точек в пользовательских базах данных для оптимизации поведения операций ввода-вывода в SQL Server 2012 и 2014 годах.
        ИСПРАВЛЕНИЕ. Медленная синхронизация при разных размерах секторов для файлов журналов основного и дополнительного реплика в средах группы доступности SQL Server и logshipping Если у вас есть группа доступности, в которой журнал транзакций на основном реплика находится на диске с размером сектора 512 байт, а журнал транзакций дополнительного реплика находится на диске с размером сектора 4K, может возникнуть проблема, из-за которой синхронизация выполняется медленно. В таких случаях включение TF 1800 должно исправить проблему. Дополнительные сведения см. в разделе Флаг трассировки 1800.
        Если SQL Server еще не привязан к ЦП, а накладные расходы от 1,5 % до 2 % для рабочих нагрузок незначительны, рекомендуется включить TF 7412 в качестве флага трассировки запуска. Этот флаг обеспечивает упрощенное профилирование в SQL Server 2014 с пакетом обновления 2 (SP2) или более поздней версии, что позволяет выполнять динамическое устранение неполадок запросов в рабочих средах.

        Табл. 3. Исправления производительности, включенные в накопительное обновление

        Просмотрите описание в столбце Симптомы и примените необходимые обновления в столбце Обязательное обновление в применимых средах. Дополнительные сведения о соответствующих проблемах см. в статье базы знаний. Эти рекомендации не требуют включения дополнительных флагов трассировки в качестве параметров запуска. Простое применение последнего накопительного обновления или пакета обновления, включающего эти исправления, достаточно, чтобы получить преимущество.

        Примечание.

        Имя cu в столбце Обязательное обновление предоставляет первое накопительное обновление SQL Server, которое устраняет эту проблему. Накопительное обновление содержит все исправления и все обновления, которые были включены в предыдущий выпуск обновления SQL Server. Поэтому для устранения проблем рекомендуется установить последнее накопительное обновление .

        Симптомы Обязательное обновление Статья базы знаний
        Неотвратимая запись во время выбора для временных таблиц приводит к проблемам с производительностью. SQL Server 2012 с пакетом обновления 2 (SP2) с накопительным пакетом обновления 1 (CU1)
        SQL Server 2012 с пакетом обновления 1 (SP1) CU10
        ИСПРАВЛЕНИЕ. Низкая производительность ввода-вывода при выполнении операции select во временной таблице в SQL Server 2012 г.
        После прерывания операции запроса вы столкнетесь PWAIT_MD_RELATION_CACHE с ней ALTER INDEX ... ONLINE или MD_LAZYCACHE_RWLOCK подождите ее. SQL Server 2014 RTM CU1
        SQL Server 2012 с пакетом обновления 1 (SP1) CU9
        ИСПРАВЛЕНИЕ. Производительность снижается после инструкции ALTER INDEX... Операция ONLINE прервана в SQL Server 2012 г. или SQL Server 2014 г.
        Запросы вдруг плохо выполняются в стандартном выпуске продукта. SQL Server 2014 RTM CU1
        SQL Server 2012 с пакетом обновления 1 (SP1) CU7
        ИСПРАВЛЕНИЕ. Потоки не запланированы равномерно в SQL Server 2012 или SQL Server 2014 Standard Edition
        Низкая производительность из-за внезапного снижения продолжительности жизни страницы. SQL Server 2012 с пакетом обновления 1 (SP1) с накопительным пакетом обновления 4 (CU4) ИСПРАВЛЕНИЕ. В SQL Server 2012 г. могут возникнуть проблемы с производительностью
        Высокая загрузка ЦП монитором ресурсов в системах с конфигурацией NUMA, большим объемом памяти и "максимальной памятью сервера" с низким значением. SQL Server 2012 с пакетом обновления 1 (SP1) с накопительным пакетом обновления 3 (CU3) ИСПРАВЛЕНИЕ. Пик загрузки ЦП при отсутствии нагрузки на сервере после установки SQL Server 2012 на сервере
        Планировщик без предоставления при выделении памяти для сортировки выполняет связанные большие ресурсы памяти в системах с большим объемом памяти. SQL Server 2012 с пакетом обновления 1 (SP1) CU2 ИСПРАВЛЕНИЕ. Ошибка 17883 при выполнении запроса на сервере с большим количеством ЦП и большим объемом памяти в SQL Server 2012 или в SQL Server 2008 R2
        Не возвращает планировщик, когда оператор сортировки проходит много контейнеров в буферном пуле в системах с большим объемом памяти. SQL Server 2012 с пакетом обновления 1 (SP1) ИСПРАВЛЕНИЕ: сообщение об ошибке "Процесс не возвращается в планировщике" при выполнении запроса в SQL Server 2012
        Высокая загрузка ЦП при выполнении параллельных запросов, компиляция в системах с несколькими узлами NUMA и большим количеством ядер. SQL Server 2012 с пакетом обновления 2 (SP2) с накопительным пакетом обновления 1 (CU1)
        SQL Server 2014 RTM CU2
        ИСПРАВЛЕНИЕ. Рабочая нагрузка интенсивной компиляции запросов не масштабируется с ростом числа ядер на оборудовании NUMA и приводит к насыщению ЦП в SQL Server
        Выделение памяти для операторов сортировки занимает много времени в системах NUMA с большим объемом памяти из-за выделения удаленных узлов. SQL Server 2012 с пакетом обновления 1 (SP1) с накопительным пакетом обновления 3 (CU3) ИСПРАВЛЕНИЕ: SQL Server проблем с производительностью в средах NUMA
        Ошибки нехватки памяти при установке SQL Server на компьютере NUMA с большим объемом ОЗУ и SQL Server имеет много внешних страниц. SQL Server 2012 RTM CU1 ИСПРАВЛЕНИЕ. Ошибка нехватки памяти при запуске экземпляра SQL Server 2012 на компьютере, который использует NUMA
        Состязание за спин-блокировку в SOS_CACHESTORE и SOS_SELIST_SIZED_SLOCK при построении индекса на основе пространственного типа данных в большой таблице. SQL Server 2014 RTM CU1
        SQL Server 2012 с пакетом обновления 1 (SP1) CU7
        ИСПРАВЛЕНИЕ. Низкая производительность в SQL Server 2012 г. или SQL Server 2014 г. при создании индекса на основе типа пространственных данных большой таблицы
        Высокий тип ожидания CMEMTHREAD при построении индекса на основе пространственного типа данных в больших таблицах. SQL Server 2014 RTM CU1
        SQL Server 2012 с пакетом обновления 1 (SP1) CU7
        ИСПРАВЛЕНИЕ. Низкая производительность в SQL Server при создании индекса на основе типа пространственных данных большой таблицы в экземпляре SQL Server 2012 или SQL Server 2014
        Проблемы с производительностью из-за SOS_PHYS_PAGE_CACHE и ожидания CMEMTHREAD во время выделения памяти на компьютерах с большим объемом памяти. SQL Server 2014 RTM CU1
        SQL Server 2012 с пакетом обновления 1 (SP1) CU9
        ИСПРАВЛЕНИЕ. Проблемы с производительностью в средах NUMA во время обработки внешней страницы в SQL Server 2012 или SQL Server 2014
        Команда CHECKDB занимает много времени для больших баз данных. Накопительный пакет обновления 6 для SQL Server 2014 ИСПРАВЛЕНИЕ. Команда DBCC CHECKDB/CHECKTABLE может занять больше времени в SQL Server 2012 или SQL Server 2014

        Важные замечания

        Ссылки

        Сфера применения

        • SQL Server 2014 Enterprise
        • SQL Server 2014 Enterprise Core
        • SQL Server 2014 Business Intelligence
        • SQL Server 2014 Developer
        • SQL Server 2014 Standard
        • SQL Server 2014 Web
        • SQL Server 2014 Express
        • Бизнес-аналитика SQL Server 2012 г.
        • SQL Server 2012 Developer
        • SQL Server 2012 Enterprise
        • SQL Server 2012 Standard
        • SQL Server 2012 Web
        • SQL Server 2012 Enterprise Core