Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Параллелизм, MAXDOP  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
Добрый день!
Научите как правильно настраивать этого зверя!
Сейчас стоят дефолтные настройки: макс степень параллелизма 0 (т.е. на все), стоимостный порог 5.
Слышал, что оптимально следует выставлять степень параллелизма как (число всех ядер)/2, так ли это?
И стоимостный порог, стоит ли его менять и как? Насколько я понимаю это временное значение, после которого начинается параллелизм.
29 апр 13, 17:37    [14245675]     Ответить | Цитировать Сообщить модератору
 Re: Параллелизм, MAXDOP  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Александр52,

Recommendations and guidelines for the "max degree of parallelism" configuration option in SQL Server
29 апр 13, 17:49    [14245752]     Ответить | Цитировать Сообщить модератору
 Re: Параллелизм, MAXDOP  [new]
Сид
Member

Откуда: Москва
Сообщений: 305
Александр52,

Если у Вас OLTP система, ставьте 1 (не пожалеете).
Если OLAP, то по формулам или экспериментально.

http://blogs.msdn.com/b/arali/archive/2009/11/26/sql-server-max-degree-of-parallelism-maxdop.aspx
30 апр 13, 10:44    [14247975]     Ответить | Цитировать Сообщить модератору
 Re: Параллелизм, MAXDOP  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Сид,
не был я так категоричен,ососбенно если сиквел >=2005
Для 2000 - таки да, для более свежих редакций,паралелизм уже хорошо работал в запросах
30 апр 13, 11:53    [14248533]     Ответить | Цитировать Сообщить модератору
 Re: Параллелизм, MAXDOP  [new]
EvAlex
Member

Откуда: Israel
Сообщений: 1001
по масимальному количеству физических процессоров в одном NUMA ноде.
как посмотреть сколько их можно найти тут
[url=]http://blogs.msdn.com/b/psssql/archive/2011/11/11/sql-server-clarifying-the-numa-configuration-information.aspx[/url]

стоимостный порог зависит от нагрузки сервера и определяется опытным путём
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 

WITH XMLNAMESPACES   
   (DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/showplan')  
SELECT  
        query_plan AS CompleteQueryPlan, 
        n.value('(@StatementText)[1]', 'VARCHAR(4000)') AS StatementText, 
        n.value('(@StatementOptmLevel)[1]', 'VARCHAR(25)') AS StatementOptimizationLevel, 
        n.value('(@StatementSubTreeCost)[1]', 'VARCHAR(128)') AS StatementSubTreeCost, 
        n.query('.') AS ParallelSubTreeXML,  
        ecp.usecounts, 
        ecp.size_in_bytes 
FROM sys.dm_exec_cached_plans AS ecp 
CROSS APPLY sys.dm_exec_query_plan(plan_handle) AS eqp 
CROSS APPLY query_plan.nodes('/ShowPlanXML/BatchSequence/Batch/Statements/StmtSimple') AS qn(n) 
WHERE  n.query('.').exist('//RelOp[@PhysicalOp="Parallelism"]') = 1 


если в результатах видишь много низких значений StatementSubTreeCost - можешь немного повысить, проверяя последствия.
30 апр 13, 15:28    [14249913]     Ответить | Цитировать Сообщить модератору
 Re: Параллелизм, MAXDOP  [new]
Сид
Member

Откуда: Москва
Сообщений: 305
Maxx
Сид,
не был я так категоричен,ососбенно если сиквел >=2005
Для 2000 - таки да, для более свежих редакций,паралелизм уже хорошо работал в запросах


2008R2 не раз при MAXDOP 0 и операции INSERT впадал в ступор из-за того, что несколько потоков тупо не поделили ресурсы. Получалось нечто похожее на deadlock внутри одного процесса.
Сервер 2 проц x 4 ядра.
По поводу экспериментов с MAXDOP 2 и т.п. результаты не помню (вроде как поведение было получше, но похожее), но в итоге остановился на 1.

Да и вообще, если порассуждать логически, в OLTP системах MAXDOP <>1 не имеет смысла (это минимум бесполезно, максимум вредно).
1 май 13, 10:37    [14252215]     Ответить | Цитировать Сообщить модератору
 Re: Параллелизм, MAXDOP  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
Сид,

Суровый у вас OLTP, если инсерты параллелятся.

У меня был случай, когда пришлось уменьшать MAXDOP, но там проблема была в постоянных запросах большого куска данных в XML. В результате оптимальным оказалось значение, совпадающее с количеством сокетов (т.е. контроллеров памяти, проще говоря). Видимо, в них боттлнек случался.
1 май 13, 11:10    [14252264]     Ответить | Цитировать Сообщить модератору
 Re: Параллелизм, MAXDOP  [new]
Сид
Member

Откуда: Москва
Сообщений: 305
Ennor Tiegael
Сид,

Суровый у вас OLTP, если инсерты параллелятся.

У меня был случай, когда пришлось уменьшать MAXDOP, но там проблема была в постоянных запросах большого куска данных в XML. В результате оптимальным оказалось значение, совпадающее с количеством сокетов (т.е. контроллеров памяти, проще говоря). Видимо, в них боттлнек случался.


Ничего особо сурового нет (больничная система, до 100+- активных юзеров в час, жмущих на кнопки + связь с дружественными системами), а вышеуказанная проблема возникала, как правило, при загрузке данных из внешних источников (а именно - постобработка), при том объёмы весьма микроскопические - вставка порядка 1-2к записей. И когда возникает дедлок-на-один-процесс, всё начинает страшно тупить и не может автоматически разрешиться, т.к. невозможно выбрать жертву))
Опять же, в OLTP параллельные планы не имеют смысла из-за самой природы OLTP :)) Там просто нечего параллелить :)) Большинство транзакций минимальны по объёму обрабатываемых данных.
Так что моя рекомендация остаётся прежней, а топикстартер уже может сам поставить нужные эксперименты с увеличением MAXDOP и замерами производительности, зная самое безопасное значение 1. Плюс никто не запрещает использовать OPTION (MAXDOP N), если это будет полезно в той или иной ситуации.
1 май 13, 13:17    [14252400]     Ответить | Цитировать Сообщить модератору
 Re: Параллелизм, MAXDOP  [new]
Crimean
Member

Откуда:
Сообщений: 13147
хороший вопрос но нет на него хорошего ответа :)
оба пути относительно тупиковые - и игра в кост и работа с maxdop. работа с maxdop - более гибкая, но и более "склочная", что ли
есть альтернатива - использование 2012 сервера и ресурс говернор для разделения разнотипных запросов с последующей их афинизацией на уровне пулов. но это возможно только при адекватной модификации "клиентской части"
7 май 13, 13:11    [14267257]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить