Настройка SQL Server MAXDOP в виртуальной среде - PullRequest
0 голосов
/ 12 сентября 2018

Мы пытались исследовать различные передовые практики для SQL Server для нашей существующей базы данных, чтобы повысить производительность, и сегодня наткнулись на варианты параллелизма.К сожалению, кажется, что есть очень противоречивые мнения о том, как настроить MAXDOP в виртуальной среде.

В настоящее время работает на AWS EC2 (r4.4xLarge) и SQL Server 2012 SP4.

Похоже ли этонастройка MAXDOP с 0 оказывает существенное влияние на производительность?И точно ли установить в качестве максимальной степени число «виртуальных» ядер, имеющихся в системе?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Не оставляйте это значение равным 0, потому что это означает, что план может использовать ВСЕ ядра, и тогда вы можете получить тонну ожидания CXPACKET.Помните, что когда планы идут параллельно, они не обязательно распределяются равномерно.Итак, некоторые потоки завершатся быстрее и будут выполнять меньше работы ... тогда вы застряли с CXPACKET, ожидающим завершения других потоков и перекомпиляции всего.

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

Я бы предложил следующее:

0 голосов
/ 12 сентября 2018

MAXDOP будет влиять только на распараллеливаемые операции.Есть много вещей, которые могут остановить распараллеливание.IOW, если запрос может использовать только 1 процессор, установка MAXDOP = 64 не сделает его быстрее.

...