Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Распараллеливание процедур. Совет / 25 сообщений из 27, страница 1 из 2
08.05.2018, 11:37
    #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
08.05.2018, 11:51
    #39641924
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распараллеливание процедур. Совет
НиколайСНЕсть ли какие решения по данной задаче?Service Broker
...
Рейтинг: 0 / 0
08.05.2018, 13:52
    #39642004
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распараллеливание процедур. Совет
задача для SSIS же
...
Рейтинг: 0 / 0
08.05.2018, 15:34
    #39642073
AlanDenton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распараллеливание процедур. Совет
Какая версия SQL Server? И какая редакция?
...
Рейтинг: 0 / 0
08.05.2018, 17:32
    #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
08.05.2018, 17:34
    #39642151
НиколайСН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распараллеливание процедур. Совет
Руслан Дамирович,

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

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

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

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

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

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

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

а зачем мне ssis если у меня просто необходимо запустить несколько процедур параллельно в рамках даже одной Базы и нет всяких там integration services.Затем что решение на SSIS делается за 5 минут, с зависимостями, обработкой ошибок и т.д.. Ну а так конечно много разных извращенных способов это сделать.
...
Рейтинг: 0 / 0
09.05.2018, 22:14
    #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
09.05.2018, 23:14
    #39642421
Дедушка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распараллеливание процедур. Совет
Relic HunterСтесняюсь спросить, это что за патерн проектирования?фасад
...
Рейтинг: 0 / 0
10.05.2018, 12:13
    #39642560
МуМу
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распараллеливание процедур. Совет
Есть такое направление- параллельные вычисления. Рекомендую почитать, немного.
Смысл в том что вы должны учитывать зависимость процедур(входные параметры процедур, блокировки и т.п.) , вы должны уметь обрабатывать ошибки и возврат к общему транзакционному состоянию. Коллеги уже написали какие есть продукты от MS. Хотя можно и изобретать свое, только вот зря, многое придумали до нас.
...
Рейтинг: 0 / 0
10.05.2018, 13:22
    #39642618
broccoli
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распараллеливание процедур. Совет
МуМуЕсть такое направление- параллельные вычисления. Рекомендую почитать, немного.
Смысл в том что вы должны учитывать зависимость процедур(входные параметры процедур, блокировки и т.п.) , вы должны уметь обрабатывать ошибки и возврат к общему транзакционному состоянию. Коллеги уже написали какие есть продукты от MS. Хотя можно и изобретать свое, только вот зря, многое придумали до нас.

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

Спасибо)

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


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

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

25% * 10 раз = 250%
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Распараллеливание процедур. Совет / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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