Published on

May 24, 2025

Понимание параллельных планов выполнения в SQL Server

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

Что такое параллелизм в SQL Server?

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

Основные термины параллелизма

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

  • Планировщик: Физический или логический процессор, ответственный за планирование выполнения потоков SQL Server.
  • Рабочий: Поток, привязанный к планировщику для выполнения определенной задачи.
  • Степень параллелизма (DOP): Количество рабочих или процессоров, назначенных для выполнения параллельного плана.
  • Максимальная степень параллелизма (MAXDOP): Опция на уровне сервера, базы данных или запроса, которая ограничивает количество процессоров, которые могут использоваться параллельным планом.
  • Задача: Маленький фрагмент работы, назначенный определенному рабочему.
  • Контекст выполнения: Граница, в пределах которой выполняется каждая задача.
  • Параллельный поставщик страниц: Компонент SQL Server Storage Engine, который распределяет запрошенные запросом наборы данных среди участвующих рабочих.
  • Обмен: Компонент, который соединяет различные контексты выполнения, участвующие в параллельном плане, для получения конечного результата.

Идентификация параллельных планов выполнения

Чтобы определить, использует ли запрос параллельный план выполнения, мы можем изучить фактический план выполнения, созданный SQL Server. Обратите внимание на следующие индикаторы:

  • Наличие оператора Parallelism в плане выполнения.
  • Желтые круги с двумя стрелками под каждым оператором, указывающие на параллельное выполнение.

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

Анализ параллельных планов выполнения

При анализе параллельного плана выполнения вы можете получить ценную информацию о производительности запроса. Вот некоторые ключевые детали, на которые следует обратить внимание:

  • Атрибут Degree of Parallelism в разделе Misc свойств узла SELECT, который указывает количество используемых процессоров.
  • Раздел ThreadStat в окне свойств, который отображает информацию о параллельных потоках запроса, такую как количество одновременных путей выполнения, идентификатор NUMA-узла и количество используемых потоков.
  • Фактическая статистика ввода-вывода каждого потока, включая количество логических и физических чтений, количество извлеченных строк, время CPU и время выполнения.

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

Принудительное выполнение параллельно

Если вы хотите принудительно использовать параллельный план выполнения для конкретного запроса, вы можете настроить значение порога стоимости параллелизма (Cost Threshold for Parallelism). Установив его на низкое значение, например, 0, вы гарантируете, что стоимость запроса всегда будет превышать порог. Кроме того, убедитесь, что опция максимальной степени параллелизма (Maximum Degree of Parallelism) установлена на значение по умолчанию (0), чтобы позволить SQL Server использовать все доступные процессоры.

Заключение

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

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.