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

Откуда:
Сообщений: 1833
имеем такой апдэйт:
	update transazioni 
	set status = 4, 
		statusfatturazione = 28,
		letta = 1, 
		ModoUso = tt.idmodouso, 
		note = left(isnull(note, '') + case 
						   when t.status < 3 
						   then ' -...-' 
						   else ''
   						end, 500)
 		
	from transazioni t
 		inner join #tt  tt 
			on tt.id = t.id
	where t.statusfatturazione <> 28

если не прописывать ему хинтом, что нужен параллельный план,
он его не выбирает добровольно.
вопрос, почему?
стОит параллельный план меньше, выполняется в 5-6 раз быстрее
(6 минут против 35).

вот оба плана(актуальные):

serial plan (default)
parallel (forced)

Microsoft SQL Server 2014 (SP3-CU3) (KB4491539) - 12.0.6259.0 (X64) 
	Apr  1 2019 22:19:54 
	Copyright (c) Microsoft Corporation
	Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)


sp_configure 'cost threshold for parallelism' -- 120
sp_configure 'max degree of parallelism' -- 6
20 сен 19, 13:13    [21975233]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
TaPaK
Member

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

имхо пугается сортировки
20 сен 19, 13:30    [21975248]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
msLex
Member

Откуда:
Сообщений: 7736
Не может быть из-за этого
EstimatedAvailableDegreeOfParallelism="4"


что, если указать maxdop 4 в запросе?
20 сен 19, 13:36    [21975256]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
но и эта подветка в параллельном тоже дешевле.
20 сен 19, 13:37    [21975259]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
msLex
что, если указать maxdop 4 в запросе?

да, канает, спасибо.
так и сделаю, а то у меня неадмины выполняют.
а как это можно объяснить?
20 сен 19, 13:40    [21975265]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
что интересно, он параллелит всякое дерьмо и с гораздо меньшей стоимостью,
и тоже на 4.
а тут уперся.
апдэйт этот периодический, и его план регулярно выносит,
но каждый раз строится новый как старый
20 сен 19, 13:43    [21975268]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
msLex
Member

Откуда:
Сообщений: 7736
Yasha123
msLex
что, если указать maxdop 4 в запросе?

да, канает, спасибо.
так и сделаю, а то у меня неадмины выполняют.
а как это можно объяснить?


ну, насколько я понимаю,

требуемый (maxdop 6) выше оценочно-доступного (EstimatedAvailableDegreeOfParallelism = 4)
это, видимо, и отсекает параллельный план уже после построения.


это все просто догадки, и на вопрос "почему сразу не рассчитать параллельный план для maxdop = EstimatedAvailableDegreeOfParallelism?", точного ответа я не знаю.

но, возможно, это связанно с кешированием планов, при котором проблематично учесть текущее состояний сервера.
20 сен 19, 13:49    [21975276]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
msLex
Member

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

С какой-то версии SQLServer (в 2017 cu12 точно есть) в плане появилось вот такое свойство NonParallelPlanReason
20 сен 19, 13:54    [21975284]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
invm
Member

Откуда: Москва
Сообщений: 9128
https://dba.stackexchange.com/questions/134453/sql-not-engaging-parallelism-for-extremely-large-query - последний обзац 4-го пункта ответа Вайта.

Возможно это оно.
20 сен 19, 14:15    [21975311]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
msLex
требуемый (maxdop 6) выше оценочно-доступного (EstimatedAvailableDegreeOfParallelism = 4)
это, видимо, и отсекает параллельный план уже после построения.

да, после смены серверного maxdop на 4 параллелит без пинков.
----
а не подскажете, во что выставить cost threshold for parallelism?
он же теперь совсем упараллелится...
и без того CXPACKET 75.56%, но это OLTP-сервер
20 сен 19, 14:17    [21975314]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
msLex
Member

Откуда:
Сообщений: 7736
Yasha123
а не подскажете, во что выставить cost threshold for parallelism?
он же теперь совсем упараллелится...
и без того CXPACKET 75.56%, но это OLTP-сервер


Brent Ozar советует не ниже 50, но у вас и так 120
поэкспериментируйте :)
20 сен 19, 14:31    [21975345]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
кстати.
у меня была попытка разбить этот апдэйт на 3,
там 5 колонок меняются, но 3 из них есть в индексах, а 2 нет,
поэтому можно разделить 3 + 1 +1
ну и заодно на одиночные апдэйты проще повесить проверку,
не апдэйтится ли "вхолостую".
и вот там он выбрал параллельный план,
хотя все те же условия: он параллелит на 4, а доступно 6.
и это не разовый выбор, а многократный.

стоимость первого апдэйта с 3 полями
примерно как и у апдэйта с 5 полями.
почему там он упорно выбирал параллельный план?
3 + 1 + 1 parallel plan
20 сен 19, 15:18    [21975413]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
TaPaK
Member

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

ну как сказали, снижать/менять паралелизм будет в том числе и от "текущей" нагрузки
20 сен 19, 15:29    [21975440]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
да одинаковая нагрузка в течение дня,
и эти планы воспроизводятся с завидным постоянством.
если на сервере что-то тормозит, я сворачиваю экспериментальную деятельность,
но именно вчера-сегодня все спокойно, сервер отдыхает,
так что планы получены в одинаковых условиях
20 сен 19, 15:59    [21975503]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
TaPaK
Member

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

ну как по мне постоянно EstimatedAvailableDegreeOfParallelism меньше разрешённого, это либо нагрузка либо вообще физически меньше :)
20 сен 19, 16:02    [21975508]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
Yasha123
Member

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

ну как по мне постоянно EstimatedAvailableDegreeOfParallelism меньше разрешённого, это либо нагрузка либо вообще физически меньше :)

нет.
EstimatedAvailableDegreeOfParallelism * 2 = количество CPU доступных сиквелу.

и у нас
SQL Server detected 2 sockets with 4 cores per socket and 4 logical processors per socket,
8 total logical processors; using 8 logical processors based on SQL Server licensing.
20 сен 19, 16:06    [21975522]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Yasha123
TaPaK
Yasha123,

ну как по мне постоянно EstimatedAvailableDegreeOfParallelism меньше разрешённого, это либо нагрузка либо вообще физически меньше :)

нет.
EstimatedAvailableDegreeOfParallelism * 2 = количество CPU доступных сиквелу.

и у нас
SQL Server detected 2 sockets with 4 cores per socket and 4 logical processors per socket,
8 total logical processors; using 8 logical processors based on SQL Server licensing.

ну у меня всё время EstimatedAvailableDegreeOfParallelism = MAXDOP
20 сен 19, 16:12    [21975535]     Ответить | Цитировать Сообщить модератору
 Re: почему не выбирается параллельный план  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
и да, получается, что дело не в несоответствии 4 и 6,
потому что план "3 + 1 + 1" имеет те же 4 в оценке и 6 реальных.
и он неизменно параллельный.

тем не менее, указание параллельности хинтом это лучше, чем флагом
(прав не надо), а эффект тот же.

вот оценочный план с maxdop 6,
хоть и 6, а не 4, все равно параллелит

parallel plan, maxdop 6
20 сен 19, 16:27    [21975560]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить