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

Откуда:
Сообщений: 165
Сейчас имеется конструкция на ВЫБОРКУ данных вида Select ... from Z1 UNION ALL ........ UNION ALL Select ... from Z15. Все 15 подзапросов извлекают данные из одной и той же таблицы T. Во всех подзапросах прописано обращение к таблицам с опцией NOLOCK. Хотя в плане нарисовано непоследовательное исполнение, но по факту получается, что на самом деле подзапросы все-равно выполняются последовательно. Об этом говорит то, что общее время равно примерно сумме времен исполнения позапросов. Сервер - многоядерный и мало нагружен.
Облазил форум по поводу возможности одновременного (параллельного) выполнения подзапросов и последующей сборки результатов. Нашел такой коммент , который хоронит идею в принципе: https://www.sql.ru/forum/622376/massive-parallel-processing-ms-sql-2008?hl=??????????? union. Но у меня обращения идут к собственной БД сервера, а не link server.
Так ли это? Возможно ли в принципе распараллелить выполнение select-ов в подобном случае?
11 ноя 14, 11:30    [16826863]     Ответить | Цитировать Сообщить модератору
 Re: И снова о параллелизме UNION ALL  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5489
Сервер-то может быть и многоядерным, а что с подсистемой ввода-вывода?
11 ноя 14, 11:45    [16827002]     Ответить | Цитировать Сообщить модератору
 Re: И снова о параллелизме UNION ALL  [new]
serg0265
Member

Откуда:
Сообщений: 165
Dmitry V. Liseev,
Аппаратная платформа сервера - мощная, недавно приобретен, оптимизорован под SQL Server. Контроллер и диски - типа ультра scsi (или как там сейчас они называются). Ядер -16.
Просто исх.таблица Т велика - 50 млн.записей. Подзапросы выполняются в серднем по 30 сек. Объединяющий запрос - 7 мин.
11 ноя 14, 11:56    [16827073]     Ответить | Цитировать Сообщить модератору
 Re: И снова о параллелизме UNION ALL  [new]
Glory
Member

Откуда:
Сообщений: 104751
serg0265
Объединяющий запрос - 7 мин.

Наверное потому, что кроме параллельного чтения потом нужно последовательно объеденить результаты этих чтений ?
11 ноя 14, 12:00    [16827092]     Ответить | Цитировать Сообщить модератору
 Re: И снова о параллелизме UNION ALL  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
serg0265,

Вот в SSIS DataFlow без вопросов бы распараллелилось бы.
11 ноя 14, 15:04    [16828638]     Ответить | Цитировать Сообщить модератору
 Re: И снова о параллелизме UNION ALL  [new]
serg0265
Member

Откуда:
Сообщений: 165
a_voronin,
Хорошее предложение, если только можно вызывать результаты обработки из приложений MS Office (как из внешнего источника).
11 ноя 14, 15:49    [16829018]     Ответить | Цитировать Сообщить модератору
 Re: И снова о параллелизме UNION ALL  [new]
zenk
Member

Откуда: Москва
Сообщений: 115
serg0265,

А сколько строк в результате получаете?
Если их несколько миллионов, возможно, основная часть тратится на формирование результирующего набора.

Попробуйте посмотреть аналогичный запрос с SELECT Max(<какое-то неиндексированное поле>)
17 ноя 14, 13:21    [16858060]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить