powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Распараллеливание процедур. Совет
27 сообщений из 27, показаны все 2 страниц
Распараллеливание процедур. Совет
    #39641920
Фотография НиколайСН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, товарищи!

Есть некая процедура, которая состоит из подпроцедур, например:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE Procedure as 
begin
   exec procedure_1;  
   exec procedure_2;   
end;

CREATE Procedure_2 as 
begin
   exec procedure_2_1;  /*5 min*/
   exec procedure_2_2;  /*8 min*/
   exec procedure_2_3;  /*15 min*/
   exec procedure_2_4;  /*4 min*/
end;



имеется процедура, которая это всё запускает, типа:
Код: sql
1.
exec Procedure_1



Общее время выполнения процедуры Procedure занимает <t(procedure_1)>+5+8+15+4=32+ минуты, что является критически.

Предлагалось создание job для распараллеливания выполнения под-процедур в Procedure_2, для сокращения времени до максимального из 4-х, тоесть до /*15 min*/.

Есть ли какие решения по данной задаче?

ПыСы. В инете честно искал, но дельного не нашел. Возможно и плохо искал(
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39641924
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НиколайСНЕсть ли какие решения по данной задаче?Service Broker
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39642004
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача для SSIS же
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39642073
AlanDenton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какая версия SQL Server? И какая редакция?
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39642149
Фотография НиколайСН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlanDenton,

Microsoft SQL Server 2012 (SP3-GDR) (KB4019092) - 11.0.6251.0 (X64) Jul 7 2017 07:14:24 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39642151
Фотография НиколайСН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руслан Дамирович,

а зачем мне ssis если у меня просто необходимо запустить несколько процедур параллельно в рамках даже одной Базы и нет всяких там integration services.
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39642152
Фотография НиколайСН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

пойду поизучаю)
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39642209
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а потом окажется, что неспроста так и процедуры зависимы друг от друга )
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39642392
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик,

причем окажется, когда гениальный механик выкатит это на бой и уйдет в отпуск.
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39642399
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НиколайСНinvm,

пойду поизучаю)

пойти и поизучать так просто не получится, надо вникать.

Русану предлагал когда-то вариант асинхронного выполнения, типа fire-and-forget.
У него можно найти пример.

Кроме того, на кодепрожекте был пример с асинхронным выполнением.
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39642409
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НиколайСНРуслан Дамирович,

а зачем мне ssis если у меня просто необходимо запустить несколько процедур параллельно в рамках даже одной Базы и нет всяких там integration services.Затем что решение на SSIS делается за 5 минут, с зависимостями, обработкой ошибок и т.д.. Ну а так конечно много разных извращенных способов это сделать.
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39642418
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стесняюсь спросить, это что за патерн проектирования?НиколайСНДобрый день, товарищи!

Есть некая процедура, которая состоит из подпроцедур, например:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE Procedure as 
begin
   exec procedure_1;  
   exec procedure_2;   
end;

CREATE Procedure_2 as 
begin
   exec procedure_2_1;  /*5 min*/
   exec procedure_2_2;  /*8 min*/
   exec procedure_2_3;  /*15 min*/
   exec procedure_2_4;  /*4 min*/
end;
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39642421
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterСтесняюсь спросить, это что за патерн проектирования?фасад
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39642560
Фотография МуМу
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такое направление- параллельные вычисления. Рекомендую почитать, немного.
Смысл в том что вы должны учитывать зависимость процедур(входные параметры процедур, блокировки и т.п.) , вы должны уметь обрабатывать ошибки и возврат к общему транзакционному состоянию. Коллеги уже написали какие есть продукты от MS. Хотя можно и изобретать свое, только вот зря, многое придумали до нас.
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39642618
Фотография broccoli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМуЕсть такое направление- параллельные вычисления. Рекомендую почитать, немного.
Смысл в том что вы должны учитывать зависимость процедур(входные параметры процедур, блокировки и т.п.) , вы должны уметь обрабатывать ошибки и возврат к общему транзакционному состоянию. Коллеги уже написали какие есть продукты от MS. Хотя можно и изобретать свое, только вот зря, многое придумали до нас.

А можно поподробнее ? есть какая нибудь ссылка ?
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39642619
Фотография broccoli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НиколайСН,

если не хочется связываться с SSIS, можно сделать джоб который создает джобы, и запускает их.
после выполнения каждый джоб сам себя убивает, а основной ждет когда же все отработают.
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39642680
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
broccoliНиколайСН,

если не хочется связываться с SSIS, можно сделать джоб который создает джобы, и запускает их.
после выполнения каждый джоб сам себя убивает, а основной ждет когда же все отработают.

ну, да, а юзеру наверняка хочется при такой процедуре, чтобы её вызыватель был уверен, что после вызова все 4 отработали и успешно.
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39644258
Фотография НиколайСН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
broccoli,

см. пост №1 от меня - я писал про Джобы. Конечно же можно, но я бы их хотел оставить на самый последний вариант.
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39644264
Фотография НиколайСН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МуМу,

всё гораздо проще - нету зависимостей, параметров и прочих фичей.

Они (процедуры типа 2_1-2_5) абсолютно независящие друг от друга. Именно поэтому и хочу их запускать параллельно.
И варианты БЕЗ джобов.

Дело в том, что я описал максимум в примере 1/300 от общей иерархии расчетов.
Переделывать все расчеты на SSIS - это на месяц геморроя, и пару месяцев тестов - на это никто не пойдёт!
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39644285
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Волшебного способа не существует. При любом варианте будут затраты на разработку и тестирование.
Наиболее подходящая под вашу задачу технология это сервис брокер, но он имеет, скажем так, особенности и учитывая, что вы его не знаете, то риски высоки.
SSIS, в данном случае, некий оверхед, но этот путь может оказаться для вас оптимальным с точки зрения затраты/риски/функционал. Что касается месяца разработки... ваша задача на ссис реализуется за день (в тех рамках что вы описали).
Если у вас нет спеца по ссис то делайте на том, что вы умеете - джобы.
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39644287
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НиколайСН,

http://www.sqlnotes.info/category/parallel-task-scheduling/

я взял за основу 7 вариант, доработал под себя.
работает везде и на express-ах тоже
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39644288
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НиколайСНМуМу,

всё гораздо проще - нету зависимостей, параметров и прочих фичей.

Они (процедуры типа 2_1-2_5) абсолютно независящие друг от друга. Именно поэтому и хочу их запускать параллельно.
И варианты БЕЗ джобов.

Дело в том, что я описал максимум в примере 1/300 от общей иерархии расчетов.
Переделывать все расчеты на SSIS - это на месяц геморроя, и пару месяцев тестов - на это никто не пойдёт!

1. Хотеть не вредно. Вредно не хотеть.
2. Если они "абсолютно" независимы - дык, джоб - ваше фсе.
3. Запуск 10 процедур параллельно способен подзавесить сервер.
4. Эффективнее - оптимизировать процедуры.
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39644439
Фотография НиколайСН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot aleks222]НиколайСНМуМу,
3. Запуск 10 процедур параллельно способен подзавесить сервер.


сервак ниразу более чем на 25% не был нагружен даже в самый пик.
Поэтому будет даже плюсом его нагрузить чем минусом)
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39644446
Фотография НиколайСН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgor,

Громадное спасибо)
Реально оч много вариантов уже придумано)

Спасибо)

На тестах вариант 7 реально работает)
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39644487
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot НиколайСН]aleks222пропущено...


сервак ниразу более чем на 25% не был нагружен даже в самый пик.
Поэтому будет даже плюсом его нагрузить чем минусом)

Плохо учили арифметику?

25% * 10 раз = 250%
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39644611
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222,

эх!!! научите как увидеть на процах 250% загрузки.. тоже хочу, т.к. больше 100 ни разу не видел
...
Рейтинг: 0 / 0
Распараллеливание процедур. Совет
    #39644981
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НиколайСНShIgor,

Громадное спасибо)
Реально оч много вариантов уже придумано)

Спасибо)

На тестах вариант 7 реально работает)

радоваться не надо спешить, распараллеливание и асинхронное выполнение - это не конёк T-SQL, так что возможны сюрпрайзы
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Распараллеливание процедур. Совет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]