Когда вносить изменения в порог стоимости для параллелизма

10

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

Прежде чем вносить какие-либо радикальные изменения в MAXDOP, я следую советам многих других, в том числе и @mrdenny в ответе на CXPACKET. Ожидает изменения производительности для SQL Server 2008 и ответ @ aron-Bertrand из раздела Работа с CXPACKET ждет - установка порога стоимости для параллелизма . Я добавил к обслуживанию, чтобы обновлять статистику полностью на ночной основе. Это похоже на разумный ход.

Тем не менее, внесение изменений в пороговое значение стоимости все еще вызывает у меня беспокойство.

В какой момент следует изменить порог стоимости параллелизма? Есть ли у кого-нибудь пример, где (после изучения стоимости их запросов и рабочей нагрузки) они внесли изменения в эту стоимость?

Приносит свои извинения, если это то, на что был дан ответ в предыдущем вопросе.

Спасибо!

the_good_pony
источник

Ответы:

3

Использование MAXDOP = 1 может помочь, но это большое оружие. Может случиться так, что фактическая проблема заключается в полезности индексов. Возможно, новый или другой индекс решит проблему.

После комментариев г-на Денни и Аарона Бертрана вы обнаружили, что другие ожидания в этой связи, вероятно, были причиной ожидания CXPACKET?

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

https://www.sqlskills.com/blogs/jonathan/tuning-cost-threshold-for-parallelism-from-the-plan-cache/

ДКП
источник
1

Я бы посоветовал вам сначала заглянуть в настройки MAXDOP, так как настройка по умолчанию 0 (использовать все доступные потоки) может быть опасной, поскольку быстрый запрос, потребляющий все доступные потоки, приведет к истощению потока.

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

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

Помните, что CXPACKET ждет - это просто симптомы из-за того, что что-то неправильно связано с устаревшей статистикой запроса или отсутствующим индексом, что приводит к неверному или другому плану.

Вы можете использовать sys.dm_exec_cached_plansи sys.dm_exec_query_planDMV для извлечения информации из кэша плана, как описано в разделе « Настройка порога стоимости для параллелизма» из кэша плана Джонатана и порога стоимости для параллелизма .

Я бы посоветовал оставить значение cost threshold for parallelismпо умолчанию, если у вас не исчерпаны запросы на настройку ресурсов, ведется обслуживание индексов и статистики, а также не проверяется, отсутствуют ли у вас пропущенные индексы, чтобы ваш запрос мог получить выгоду.

Примечание. Параметр Maxdop также можно применять на уровне запроса, используя OPTION (MAXDOP n)который будет переопределять параметр сервера.

Кин Шах
источник