2015-07-10 4 views
0

Что такое Parallelism(Distribute Streams) Работа в Execution plan. Почему он увеличивает количество строк из предыдущей операции.Что такое параллелизм (распределение потоков) в плане выполнения

Запрос:

SELECT TOP 5000 MM.MEMBER_ID, 
       MM.MEMBER_NO, 
       MM.MEMBER_NAME, 
       MM.TRADE_CLASS, 
       MT.DESCRIPTION, 
       MS.DESCRIPTION, 
       MAI.ADDRESS_1, 
       MAI.ADDRESS_2, 
       MAI.CITY, 
       MAI.STATE, 
       MAI.ZIP 
FROM MEMBER_MASTER MM 
     INNER JOIN MEMBER_TYPE MT 
       ON MT.CODE = MM.MEMBER_TYPE 
     INNER JOIN MEMBER_STATUS MS 
       ON MS.CODE = MM.MEMBER_STATUS 
     INNER JOIN MEMBER_ADDRESS_INFO MAI 
       ON MM.MEMBER_ID = MAI.MEMBER_ID 
WHERE MAI.PRIMARY_ADDRESS_FLAG = 'YES' 

План выполнения:

enter image description here

Из приведенного выше плана выполнения вы можете ясно видеть, что строки COUNT увеличивается с 39,771 к 1,272,672. Почему это происходит?

ответ

3

Система решила, что она может извлечь выгоду из параллельной обработки некоторой части обработки. В этом случае, по-видимому, было решено, чтобы 32 независимых потока работали с набором строк (1272672 = 39771 * 32). Это не должно вызывать беспокойства - как правило - и «дублированные» строки будут устранены более поздней операцией (Gather Streams).

+0

Это вызовет проблемы с производительностью. Также, что «операция» (Join и т. Д.) Заставляет планировщик выполнения использовать «Параллелизм (распределять потоки)» –

+2

@Fireblade - он * не должен * вызывать проблему - но обратите внимание, что я довольно cagey. Оптимизатор имеет, исторически, иногда параллельные операции, которые были бы быстрее, чем последовательные процессы, или с меньшим параллелизмом. Вот почему существует подсказка [MAXDOP'] (https://msdn.microsoft.com/en-us/library/ms181714.aspx), если вам нужно заставить оптимизатора отказаться от параллельных планов. Не трогайте его, если вы не продемонстрировали проблему с производительностью *. Параллелизм используется несколько раз в плане для * поддержки * операций объединения. –

+0

Спасибо за разъяснение :) –