2010-10-20 3 views
2

Выполняет ли запрос JOIN под SQL Server новый поток? В общем, как SQL Server управляет потоком?SQL Server и потоки

Спасибо, -Питера

ответ

1

SQL Server 2005 и более поздние версии может выполнять одиночные запросы с использованием нескольких потоков, когда он определяет, что запрос может принести пользу. Это основано на времени, требуемом для сбора необходимой информации, предварительной фильтрации индексов и последующего объединения данных с несколькими потоками. Он не является автоматическим, основанным на соединении, это происходит на основе гораздо более сложных критериев.

http://msdn.microsoft.com/en-us/library/ms178065%28v=SQL.100%29.aspx

В процессе оптимизации запросов SQL Server выглядит для запросов или операций с индексами, которые могли бы извлечь выгоду из параллельного выполнения. Для этих запросов SQL Server вставляет операторы обмена в план выполнения запроса для подготовки запроса для параллельного выполнения. Оператор обмена является оператором в плане выполнения запроса, который обеспечивает управление процессом, перераспределение данных и управление потоком. Оператор обмена включает в себя логические операторы Distribute Streams, Repartition Streams и Gather Streams как подтипы, один или несколько из которых могут отображаться в выводе Showplan плана запроса для параллельного запроса.

2

Некоторые операции в запросе могут быть распараллелены, в частности сканирование в широких диапазонах. Оптимизатор запросов определяет, какие операции могут извлечь выгоду из параллелизма и создает параллельный план, см. Parallel Query Processing. также некоторые операции DDL могут выполняться параллельно, см. Parallel Index Operations.

Но одно можно сказать наверняка: оператор JOIN не вводит параллелизм. Сводный набор, соединенный этим оператором , может ввести параллелизм, это правда, но не СОЕДИНЕНИЕ.