У меня есть операция копирования в конвейере ADF (фабрика данных Azure) с локальным SQL Server в качестве источника и ADLS в качестве цели.
Мы передали SQL-запрос с простым условием where в операции копирования, которая будет выполняться на SQL Server, и результаты будут переданы в ADLS в паркет.
Когда SQL-запрос выполнялся на исходном сервере sql, мы видели, что многопоточность не происходит. то есть SPID, который работает на SQL Server, не отображается с несколькими потоками (параллельными потоками).
Очень редко мы наблюдали, что он работает с несколькими потоками (один и тот же spid отображается с несколькими потоками, т. Е. Больше строк на данный отдельный spid), и в большинстве случаев он не работает с многопоточностью (1 строка на каждый отдельный spid).
Мы не могли понять, на каком основании он решает использовать многопоточность или нет?
Есть ли какие-либо ограничения в конвейере ADF для запуска многопоточности или нет?
Следующая конфигурация также указывает, что параллелизм должен происходить для запросов SQL.
name value_in_use
cost threshold for parallelism 5
max degree of parallelism 4
Пример запроса SQL, который мы выполняем (замененные имена> ..
SELECT column1, <column2>, <column15>
FROM FactTablename (NOLOCK)
WHERE XXId between 8834 AND 8863
AND yyID % 4 = 2
Многопоточность должна выполняться для запросов SQL, выполняющихся каждый раз на SQL Server. Также обратите внимание, что выполняемый нами запрос возвращает ~ 24 миллиона записей, так что это хороший набор данных, который выполняется немного дольше и является хорошим кандидатом для параллелизма / многопоточности.