Имя: Пароль:
1C
1С v8
v8: Параллельные вычисления в 1С (исключительно для МС СКЛ)
0 gallam
 
11.02.13
09:43
Коллеги, появилась возможность выполнения параллельных запросов в информационной системе 1С. Решение предоставляется бесплатно, просьба оценить и ждем Ваших комментариев.
Описание: http://softpoint.ru/article_id4224.htm

Отвечу на все вопросы в этой ветке
1 fmrlex
 
11.02.13
09:47
(0) Закладки, бэкдоры в комплекте?
2 МихаилМ
 
11.02.13
10:02
(0)
в 5 строке описания опечатка.
бесплатная лицензия на год. через год лицнзия будет бесплатной? если нет - цены озвучте.

в статье не приведены примеры (область применения)
не описано какой прирост производительности ожидать.
3 Godofsin
 
11.02.13
10:03
(2) +1
Объясните дураку, что знкачит:
"Необходимость связывания с транзакцией основной сессии пользователя."
4 Godofsin
 
11.02.13
10:05
Какие-то сведения отправляет...
5 fmrlex
 
11.02.13
10:06
Год бесплатно тестите на боевых базах, а потом платите бабло... Правильным путем идете, товарищи.
6 gallam
 
11.02.13
10:08
(2) можно указать строчку (в упор не вижу))
По приросту производительности - все зависит от ресурсов (допишем в описание).
По лицензии - через год продление бесплатное.


(3) Это фраза показывает сложности использования технологии в транзакционных операциях (например, проведение). Просто при параллелизме в транзакции из другого спид не видны изменения основной сессии.
7 Живой Ископаемый
 
11.02.13
10:13
Исключительно длямс скл? Тогда исправьте название темы
8 gallam
 
11.02.13
10:13
(1) Все что требуется для внедрения в комплекте.
10 МихаилМ
 
11.02.13
10:15
(6)
SPLoader_For1C8x_1.0.0.X.exe - для 32-разрядного сервера 1С
SPLoader_For1C8x_x64_1.0.0. X.exe - для 32-разрядного сервера 1С
11 gallam
 
11.02.13
10:18
(10) Спасибо
13 H A D G E H O G s
 
11.02.13
11:13
Мертворожденное дитя.
14 gallam
 
11.02.13
11:13
(13) Почему))
15 mikecool
 
11.02.13
11:17
я не понял - прослойка раскидывает выполнение с одного процесса на несколько? так вроде и щас так - заводим несколько процессов и пользователи сами "распараллеливаются"
16 gallam
 
11.02.13
11:24
(15) Не совсем так.
Технология позволяет распараллеливать запросы 1С для каждого сеанса (раньше такой возможности никогда не было), причем управляете всем этим процессом из кода 1с. Таким образом, можно значительно ускорить выполнение независимых запросов 1С, например, при получение отчета.
Например, пользователь для получения данных отчета делает 3 запроса 1С к 3 разным регистрам: Остатки, Резервы и Партии. Эти 3 запроса можно выполнить параллельно и суммарное время выполнения будет не (Длительность1+Длительность2+Длительность3), а максимальная длительность всех запросов (на практике немного дольше).
17 gallam
 
11.02.13
11:26
+ Кстати подобные темы и решения пробовали реализовать: v8: Эффективность фоновых заданий
но на стадии прототипа.
18 H A D G E H O G s
 
11.02.13
11:26
(15) Ваш WaitForMultipleJbjects никому особо не нужен.
Сделайте параллельную запись в регистры - тогда приходите.
19 mikecool
 
11.02.13
11:27
(16) из схемы этого совсем не понять
20 gallam
 
11.02.13
11:31
(18) Знаете, не люблю невежество по отношению к технологиям.
Параллельная запись в регистры - все это только на словах - причем если капнуть глубже)))
Почему:
Ответьте на вопрос и сами поймете:
1. Как при параллельной записи/удаления соблюсти транзакционную целостность и не потерять в скорости?

(19) может быть вы и правы (бывает авторам не видно не понятных для них вещей), порекомендуйте что добавить для большей простоты/прозрачности?
21 H A D G E H O G s
 
11.02.13
11:35
(20)
1) Зачем транзакционная целостность?
Например при удалении движений, самое простое.
22 gallam
 
11.02.13
11:38
(21) Вот вы и ответили на вопрос))
А если по одному регистру в одном потоке движения удаляться, а по другому нет (произошла ошибка? Что дальше произойдет? - документ проведен/частично проведен/не проведен?
23 sapphire
 
11.02.13
11:49
(0) Исправьте, пожалуйста опечатку:

>>Установить сервис для внедрения к библиотеку доступа к данным.

Установить сервис для внедрения И библиотеку доступа к данным.
24 H A D G E H O G s
 
11.02.13
11:50
(22) Нет, я ни на какие вопросы не отвечал.

Ну придумайте что нибудь, вы же капитан.

Ну считайте, что документ не проведен, движения не удалились, там, где транзакция завершилась удачно - верните из копии, копию держите в памяти, либо в ВТ.
Сообщите пользователю и предупредите в документации, что такое возможно.

Придумайте что-нибудь, че я за вас думать должен?
25 gallam
 
11.02.13
11:51
+ кстати как раз про все эти риски описано в статье.
Конечно, не применима технология для всего - пока для отчетов, потом может и в транзакции.
26 sapphire
 
11.02.13
11:51
(22) Флаг проведен вообще такой веселый :)
27 Rovan
 
гуру
11.02.13
11:54
(0) и много  копий продали уже ?
28 gallam
 
11.02.13
11:58
(24) Мы и придумываем, вот покрыли целую область (параллельность запросов 1С в отчетах), раньше этого не было, потом дальше будем развивать.
Вы же даете абсолютно неправильную оценку (13).
Цель топика: пояснить если не понятно для чего это надо, дать возможность использовать в работе.
(23) сейчас поправим.
(27) прошло бета - тестирование, опробацию у клиентов, демонстрация в MS SQL Club: http://ineta.ru/sqlrus/Meeting/2013-01-24-16-00
ошибок нет, предоставляется бесплатно.
29 H A D G E H O G s
 
11.02.13
12:01
(28) Дааа. Живорожденным оно не будет.
Ну вот накера?

Будет десяток клиентов, из которых реально эти параллельные отчеты нужны 2-3, остальные - энтузиасты.

А потом, глядишь, 1С запилит это в платформу. Хотя вряд ли.
30 sanfoto
 
11.02.13
12:03
(28) gallam,
т.е. это немного похоже на СКД,
только уже для для объектов
Запрос =НОВЫЙ Запрос; я правильно понял?
31 sanfoto
 
11.02.13
12:06
похоже нет - это прямые запросы,
тог-ды  
> H A D G E H O G s (29)+
>Будет десяток клиентов, из которых реально эти параллельные
>отчеты нужны 2-3, остальные - энтузиасты.
+
32 sapphire
 
11.02.13
12:07
(29) Чего взъелся-то? Хочешь используй, тебя же никто не заставляет.
33 H A D G E H O G s
 
11.02.13
12:09
(32) Я - сама доброта.
34 gallam
 
11.02.13
12:11
(29) Не поверите, Вы лично по вашим ответам в предыдущих топиках как раз и были для меня энтузиастом. А по поводу зачем - множества и больших и маленьких систем имеют длительные самописные и не самописные отчеты. Знаете как их пытаются ускорять - покупают мощнее железо, хотя оно в большинстве случаев не надо.

(30) Можете вопрос более конкретный задать...
СКД и наша технология абсолютно разные вещи и в будущем возможно еще и параллелить СКД) Технология параллельных вычислений она универсально и не только для 1С (для любых других сред разработки - С++, Delphi, где есть OLEDB - это ограничение).
Кратко есть группа независимых запросов SQL (В 1С свой формат), есть возможность минимальными усилиями без задержек их выполнить параллельно и получить все выборки быстрее. Дальше по вашему алгоритму программы.
К (31) - это не прямые запросы!!!!!!!!!!! Это запросы 1С со всеми ее временными таблицами и прочее.
35 sapphire
 
11.02.13
12:11
(28) Я так понимаю, что SPLoader инжектирует в рабочий процесс....
36 gallam
 
11.02.13
12:12
(35) Да, он работает с библиотекой OLEDB
37 sapphire
 
11.02.13
12:12
(34) Отчего же не поверить. Верим. Охотно верим. С учетом того, КАК основная масса эти запорсы пишет ничего удивительного нет. Но, отчасти, H A D G E H O G s, прав - удел Вашего детища - тешить умелые руки.
38 sapphire
 
11.02.13
12:13
(36) И только? :)
39 sapphire
 
11.02.13
12:14
Мдя.. кто что инжектирует, хотя и не запрещено же :)
40 H A D G E H O G s
 
11.02.13
12:16
А вот параллельная запись регистров, либо групповая запись объектов (все ссылочные объекты, их структура проста - Шапка+Табчасти, ничего сложного) взлетели бы мощнее.
41 sapphire
 
11.02.13
12:17
(40) Не факт
42 H A D G E H O G s
 
11.02.13
12:18
Хотя я лично такое использовать у нас никогда не буду.
Просто не смогу :-) Только 1С, только типовое, только хардкорр!
43 sapphire
 
11.02.13
12:19
(42) :))))
44 gallam
 
11.02.13
12:20
(38) Работает только с ней (и с интерфейсами OLEDB).
(37) Мы позиционируем технологию так:
- Есть длительный аналитический отчет, в нем проведена линейная оптимизация, но длительность слишком большая. Вы прибегаете к технологии независимо от кривизны рук.
- Есть любой отчет, выделяете независимые запросы и оптимизируете.

В любом случае гораздо эффективнее покупки железа или чего еще.

(40) Основная сложность всех наших технологий в том, что все привыкли по старинке заниматься ускорением отчетов и не хотят изменяться. А насчет развития технологии - мы этим занимаемся и будет компонента улучшаться.

(42) Времена меняются и я бы не использовал слова типа: "никогда")))

P.S> С утечкой памяти 1С тоже был скептицизм, пока не попробовали смоделировать.
45 sanfoto
 
11.02.13
12:24
(34) gallam
>К (31) - это не прямые запросы!!!!!!!!!!!
>Это запросы 1С со всеми ее временными таблицами и прочее.

Это уже Меня заинтересовало))

//т.е. Дано:
Запрос1 =Новый Запрос("Выбрать...");
Запрос2 =Новый Запрос("Выбрать...");

ВыполнитьПараллельно(Запрос1,Запрос2);
//// далее обработка результатов
Я правильно понял? ))
46 sapphire
 
11.02.13
12:25
(44) Да идея ясна, что либо proxy-dll, либо инжекция.
- Есть длительный аналитический отчет, в нем проведена линейная оптимизация, но длительность слишком большая. Вы прибегаете к технологии независимо от кривизны рук.
- Есть любой отчет, выделяете независимые запросы и оптимизируете.

Бесполезно оптимизировать код, который не работает (с)
47 sanfoto
 
11.02.13
12:28
В моем понимании
"Запрос на языке 1с" неравно "Запрос на языке SQL".

Если имеется ввиду "SQL Запрос от сервера 1с"... уточняйте плиз)).
48 sapphire
 
11.02.13
12:29
(45) Принцип прост: при передаче в тексте проверяются передаваемые строки, если строка содержит "BeginParallelQueryExecution" то, все, что передано инкрементирует соединение и устанавлвается текст, пока не получить строку с EndParallelQueryExecution.
И тупо вернет массив рекордсетов.
49 sapphire
 
11.02.13
12:29
(47) А там не столь важно, дело в том, что они получают уже транслированный запрос.
50 gallam
 
11.02.13
12:30
(46) Слишком глубокомысленно)

(47) Технология, когда ее используем для 1С, то Запрос 1С - сделана специальная адаптация.

Если самописное приложение на любом другом языке (Запрос SQL).
51 sapphire
 
11.02.13
12:30
Про "тупо", конечно не само решение а в смысле возвращаемого значения :)
52 gallam
 
11.02.13
12:31
(48) Принцип действительно прост, эффект тоже есть, внедрение не сложное.
53 gallam
 
11.02.13
12:32
+ (48) Единственное - адаптация к 1С)
54 sapphire
 
11.02.13
12:32
(52) Да понятно.
55 sapphire
 
11.02.13
12:33
(53) Если применительно к 1С, то в чем, так сказать, адаптация? В том, как в 1С вернуть массив выборок?
56 sapphire
 
11.02.13
12:35
(53) Вот что мне непонятно, так это если используется OLE DB, то, по-идее без разницы какую СУБД использовать.
57 Speshuric
 
11.02.13
12:36
(13) +1
1. Отчеты в фон и так неплохо переносятся (СКД+фоновые задания).
2. Проведение и запись - слишком много нюансов по транзакционной работе.
3. Для проведения есть стандартный в общем-то приём - оперативные регистры двинуть сразу, остальное фоновыми заданиями.

Параллельное выполние - интересная идея для управляемых форм с несколькими формами списков, но это достаточно узкая ниша в 1С.

(22) если произойдёт ошибка, то в 1 потоке откатится вся транзакция. В нескольких потоках придётся открытые транзакции держать до последнего во всех потоках, а это какой-то блокировочный ад.
58 H A D G E H O G s
 
11.02.13
12:39
(57)
если произойдёт ошибка, то в 1 потоке откатится вся транзакция. В нескольких потоках придётся открытые транзакции держать до последнего во всех потоках, а это какой-то блокировочный ад.

Вы вообще о чем? Проблема в том, что один поток может нормально записаться и завершить транзакцию, а другой - нет. Вот что с первым делать?
59 IamAlexy
 
11.02.13
12:40
задам адски тупой вопрос: чем это принципиально отличается от отправки запросов в фоновые задания и считыванию результатов по мере выполнения оных ?
60 sapphire
 
11.02.13
12:40
(58) Тебя и спрашивали, как быть в таком случае?
61 mistеr
 
11.02.13
12:42
(0) Хоть один реальный use-case приведите? В статье одна заумь. Я надеюсь, разработка выросла из успешного решения реальной задачи? Хоть им похвастайтесть.

Пока что все выглядит так, что H A D G E H O G и sapphire правы.
62 sapphire
 
11.02.13
12:42
(59) Тем, что память rphost жрать, по-идее, будет меньше.
63 H A D G E H O G s
 
11.02.13
12:42
(57) Ошибка может произойти в момент CommitTransaction, поэтому держать открытыми транзакции во всех потоках - нет смысла. Все потоки ждут завершения своих запросов к SQL и оля, улю, приехали.

(60) Я и написал - резервная копия того, что было до BeginTransaction
64 sapphire
 
11.02.13
12:42
(61) Да и так ясно где это применимо, и главное кем.
65 gallam
 
11.02.13
12:43
(56)(57)
Запрос 1С превращается во много различных запросов SQL (и это надо было правильно обработать). Такой механизм был сделан специально для 1С 8.

Существуют другие варианты выполнять в фоне, но мы стремились сделать внедрение этого механизма максимально быстро.

(59) Я надеюсь и адаптировать к параллельным вычислениям проще и в одном отчете.
66 sapphire
 
11.02.13
12:44
(63) Ты предлагаешь им использовать ISOLATION LEVEL SNAPSHOT?

Хм.. Тогда tempdb будет расти.
67 H A D G E H O G s
 
11.02.13
12:44
(66) Как быть пользователям MS SQL 2005 ?
68 gallam
 
11.02.13
12:45
(61) В статье шаблон внешнего отчета с параллельным выполнением запросов 1С, пробуете, разбираетесь и к своим задачам применяйте.
69 sapphire
 
11.02.13
12:45
(67) Угадай :)))
70 H A D G E H O G s
 
11.02.13
12:46
(66) Нет, я предлагаю использовать самостоятельно ВТ в tempDB.
Но, блин, выручки от всего этого зоопарка уже не вижу, считать старую версию, поместить в ВТ....
71 gallam
 
11.02.13
12:48
(63) Для вашего случая имеет смысл либо использовать распределенную транзакцию, либо организовать механизм самостоятельно.
72 GANR
 
11.02.13
12:48
(17) Пробовал, кстати - кладешь в регистр сведений Очередь документы, подлежащие проведению, а потом фоновым заданием проводишь и убираешь из Очереди. Наше Бюджетирование, по которому проводки делаются по 5-7 секунд на документ, из за огромного количества источников данных (500-700), только так и победили.
73 sapphire
 
11.02.13
12:48
(65)
Запрос 1С превращается во много различных запросов SQL (и это надо было правильно обработать).

И? Всё что между SetQueryGUIDForExecute и EndQueryGUIDForExecute разбить на несколько?

Ну можно посмотреть в ТЖ что там за страшный SDBL/SQL поедет на сервант БД....
74 gallam
 
11.02.13
12:51
(73) Так я для этого здесь)))
Пробуйте , смотрите.

(72) Мы не рассматриваем пока транзакции и их параллельность.
75 mistеr
 
11.02.13
12:51
(68) Я не понял, кто тут в ком заинтересован. :) Обязательно заставлять что-то скачивать и запускать конфигуратор? Просто словами не описать, настолько сложный и экзотический отчет?
76 gallam
 
11.02.13
12:55
(75) И я не пойму)))
1. Бесплатно.
2. Отчет предоставлен.
3. Технология дается.
4. На форуме ответы на вопросы.

А у вас:
1. Не хочу смотреть/читать/открывать конфигуратор.

Словами объяснить можно, но по мне:
1. Прочтите все материалы, которые вам были даны.
2. Сформулируйте вопрос по существу - получите оперативный ответ.
77 sapphire
 
11.02.13
13:00
(76) О. Вот Вам идейка как лучше показать где это применимо:
план/фактный анализ - плановые показатели и факты можно распараллелить и пример многим знаком.
78 gallam
 
11.02.13
13:00
+ (76) Шаблон отчет только для примера (не рабочий кейс), чтобы проще вам применить в своих задачах.
79 gallam
 
11.02.13
13:03
(77)
Я не вижу проблем в том, чтобы попробовать использовать нашу технологию для этой задачи. У кого она есть, попробует. А если возникнут вопросы, то задаст их нам - мы поможем.
80 Speshuric
 
11.02.13
13:06
(63) и вправду, может же не хватить журнала. тогда параллельные транзакции не организовать разумными трудозатратами.
81 gallam
 
11.02.13
13:07
(77) Мы проводили анализ эффективности параллельного выполнения запросов 1С для отчетов на больших БД, он гарантированно есть, но в качестве примера его передать не можем. Так как надо передавать БД (желательно с данными), сам отчет.
Поэтому в качестве шаблона распараллеливания запросов 1С дан внешний отчет с примитивными запросами 1С для УТ 11, которую могут все скачать и установить.
82 mistеr
 
11.02.13
13:08
(58) Ничего уже не сделаешь. Если в одной сессии успели закоммитить, а в другой ошибка - ВСЕ, суши весла, данные в базе уже не согласованы.

С параллельной записью все печально, я полагаю.

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

Почему много данных скапливается в памяти? Потому платформа не позволяет использовать DML запросы. Чтобы изменить миллион строк регистра, их нужно сначала прочитать в память. Если нужно изменить в одной транзакции - значит нужно загрузить их все в память одновременно.

Почему платформа не поддерживает DML? Потому что кроме блокировок в БД, у платформы есть еще свои объектные блокировки. Они хранятся в памяти, и все данные по ссылкам тоже должны быть в памяти.

Это фундаментальное ограничение платформы (дающее взамен много плюшек, однако). Пока разработчики его не преодолеют, о параллельной записи можно забыть.
83 H A D G E H O G s
 
11.02.13
13:11
(82) Я написал, что можно сделать, читай ниже.
84 H A D G E H O G s
 
11.02.13
13:12
"Почему много данных скапливается в памяти? Потому платформа не позволяет использовать DML запросы. Чтобы изменить миллион строк регистра, их нужно сначала прочитать в память. Если нужно изменить в одной транзакции - значит нужно загрузить их все в память одновременно."

Кто вам такую керню сказал?
85 mistеr
 
11.02.13
13:13
(76) >Отчет предоставлен.
Скачал VypolnenieZaprosovUT.epf, открыл. Не вижу отчета. вижу форму для тестирования терх запросов. Где отчет?
86 sanfoto
 
11.02.13
13:14
(57)    Speshuric

>1. Отчеты в фон и так неплохо переносятся (СКД+фоновые задания).

Пример Запроса в фоновом задании
http://nastroy-ka.ru/mgeneral/15--1.html

//Вопрос в следующем как узнавать что все фоновые завершились?
ВыполнитьВРазличныхФоновыхЗаданиях(МассивЗапросов);
// у меня только одна идея Писать что-то в регистр сведений
///
87 H A D G E H O G s
 
11.02.13
13:14
Регистры отлично отбираются отборами, а подчиненные регистратору имеют обычно отношение 1:1 по числу строк таб части, искустенно ограниченной 100000 строк.
88 gallam
 
11.02.13
13:15
(85) Это пример, как надо параллелить запросы 1С.
Что вам не понятно по его коду?

p.S> Я его назвал внешним отчетом.
89 Aleksey
 
11.02.13
13:16
Как то это противоречит парадигме 1С. Когда она все запросы собирает в один большой запрос тысяч на 16 строк и выполняется один раз.

А тут предлагается наоборот дробить на кучу мелких
90 H A D G E H O G s
 
11.02.13
13:18
(89) Че за парадигма то?
91 mistеr
 
11.02.13
13:18
(84) Да, согласен, для регистров можно не одновременно. Остальное в силе.
92 sapphire
 
11.02.13
13:19
(88) Ну так и не отчет это вовсе, а обработка :)
93 sapphire
 
11.02.13
13:19
(90) Никто не знает, но звучить загодочно
94 Aleksey
 
11.02.13
13:19
(90) Запрос должен быть один
95 fmrlex
 
11.02.13
13:19
(90) Не херачить запросы в цикле например.
96 gallam
 
11.02.13
13:22
(89) С точки зрения выполнения запроса 1С на сервере СУБД ничего не меняется.

(86) +1 Один из вариантов решения.
Но наше решение кроме 1С 8 можно использовать и в ADO (а это 1С и другие самописные программы).
Оно универсально и не зависит от фоновых задач 1С.

Предполагаю, что по скорости доработки и выполнения оно обгонит фоновые задачи.
97 sapphire
 
11.02.13
13:31
(94) С чего бы это?
98 mistеr
 
11.02.13
13:32
(86) Я просил пример отчета, который имеет смысл ускорять таким способом, и который получает выигрыш от распараллеливания. В идеале - отчет для типовой конфы, чтобы можно было повторить и увидеть результат. Есть такое?

Если нет, то хотя бы описание словами. Был такой-то отчет по таким-то данным в такой-то конфе, выполнялся столько-то, распараллелили так-то, получили столько-то. Хотя бы так можете? Нет? Тогда извините, а с чем же вы пришли?

Как в анекдоте получается. "Дорогая, ты ж у меня умная, придумай сама что-нибудь".
99 mistеr
 
11.02.13
13:33
(98) -> (88)
100 gallam
 
11.02.13
13:34
(94) В большинстве сложных запросов 1С всегда множество запросов SQL (заполнение виртуальных таблиц, и прочее).
101 sanfoto
 
11.02.13
13:36
(98)  mistеr
>Был такой-то отчет по таким-то данным в такой-то конфе,
>выполнялся столько-то, распараллелили так-то, получили
>столько-то...
+
хотелось бы циферки, например в % (процентах)
102 sapphire
 
11.02.13
13:36
(101) И что это даст?
103 H A D G E H O G s
 
11.02.13
13:37
(95) Это совсем другое, нежели "собрать все в один запрос".
104 H A D G E H O G s
 
11.02.13
13:37
(94) Где это написано?
105 sanfoto
 
11.02.13
13:37
(100) gallam
тоже +
И даже больше "ПРАКТИЧЕСКИ ЛЮБОЙ запрос на Языке 1С"  = "нескольким SQL"
106 H A D G E H O G s
 
11.02.13
13:38
Готов поспорить на шнурок от USB, Aleksey - бывший семерошник.
107 Aleksey
 
11.02.13
13:38
(97) Ты у меня спрашиваешь? Я типовые не пишу
108 sapphire
 
11.02.13
13:39
О кстати, а ТС предупреждает о "забористости" своего отчета на больших данных?

А то пользователь наш настолько умен, что могет и кнопочку-то нажать...
109 Aleksey
 
11.02.13
13:40
(104) Что такое парадигма прочитал? Вот там и написано
110 gallam
 
11.02.13
13:40
(98)
Может мы конечно под различными углами все видим, но:...

Приведу пример:
Есть Visual Studio , предоставляется API для программирования,
пример использования и программист адаптирует к своей задачи.

В статье сказано в пункте эффект (у нас получалось для 3-х запросов) ускорение в 2,5 раза.

P.S> Вот и предоставлено API и пример. Если надо адаптировать к вашим задачам (к вашему отчету) - то надо анализ вашего отчета, применимость подтвердить.
111 Aleksey
 
11.02.13
13:41
(106) В 7-ке как раз с этим порядок
112 H A D G E H O G s
 
11.02.13
13:42
(111) Я вас за версту чую.
113 Aleksey
 
11.02.13
13:43
(112) Так и хочется спросить. "И чё?"
114 sapphire
 
11.02.13
13:44
(112) Да ты нюхач :)
115 Aleksey
 
11.02.13
13:45
Нет, ну правда, от того что я бы не знал 7-ки писать всё в один запрос перестала быть парадигмой?
116 sapphire
 
11.02.13
13:47
(110) Ладно, что Вы так обижаетесь?
Идея хорошая, кто знает где использовать, тот по-пробует.
У меня, например, не прокатит из-за ограничений на серверах.

А тем, кто тут так неимоверно крут - пусть напишут код на tSQL, который выполнит 2 запроса параллельно.
117 H A D G E H O G s
 
11.02.13
13:48
(115) Писать все в один запрос и не было парадигмой.
118 mistеr
 
11.02.13
13:58
(110) Ты пойми, если хочешь привлечь внимание к своей разработке, покажи ее с выгодной стороны. Подготовь такой пример, выложи, Тогда только кто-то попробует, появятся вопросы по существу. А так никто не будет специально ломать голову "а где бы мне это применить".

Это что касается рядовых одинесников. С теми же, кто готов лезть в дебри SQL и оптимизации, надо общаться на соответствующем уровне. К чему ты, как видно, тоже не готов.
119 Aleksey
 
11.02.13
14:06
(117) А что же это такое?
120 sapphire
 
11.02.13
14:19
(118) Фигасе :)
так никто не будет специально ломать голову "а где бы мне это применить". Это что касается рядовых одинесников.

Т.е. быдлокодеров, кои вообще ни в платформе, ни в чем другом не смыслят. Мдя.
121 gallam
 
11.02.13
14:24
(116) А какие ограничения у серверов?
122 sapphire
 
11.02.13
14:56
(121) Ну, на игрушечном можно развернуть, а для боевых серверов - надо согласовывать это со многими.....
123 sapphire
 
11.02.13
15:07
(121) Кстати, интересно сравнить данные при использовании этой компоненты и принудительного использование параллельного плана выполнения запросов в её отсутствие.
124 mistеr
 
11.02.13
15:08
(120) Не передергивай. В 1С, также как и в яве, в дотнете и прочем, полно людей разного уровня. Все они востребованы на своем месте, так или инача.
125 sapphire
 
11.02.13
15:12
(124) Да ну? В Яве-то? В java такие люди не задерживаются, про .NET поверить можно, но там таки мозг нужен, в 1С же мозг не всегда востребован.
126 sapphire
 
11.02.13
15:14
(118)
>>С теми же, кто готов лезть в дебри SQL и оптимизации, надо общаться на соответствующем уровне. К чему ты, как видно, тоже не готов.

Откуда дровишки?
127 crasler
 
11.02.13
15:26
(0) Насколько я помню, фирма 1С распространяет лицензию сервера из расчета одна лицензия на один процессор, тобиш сколько не параллель процессов всё равно будет выполняться на одном физическом процессоре или по крайней мере это зависит от ОС сервера (если есть автоматическое раскидывание процессов по процессорам/ядрам)
Другой аспект. Если запросы связанны с одними и теми же таблицами в БД то как никрути будут срабатывать блокировки (если в одной сессии) и получиться примерно одно время если посылать запросы последовательно, а может быть ещё хуже!
128 AaNnDdRrEeYy
 
11.02.13
15:32
(0) На сайте есть инструкция по установке но нет инструкции по удалению, как после тестов все удалить безболезненно и без последствий?
129 crasler
 
11.02.13
15:38
(128) В установке и удалении программ (Программы и компоненты) не прописалось? Если да то наверняка так!
130 gallam
 
11.02.13
15:39
(127) Про лицензии не понял вообще...
Вы абсолютно неправы.
- "Если запросы связанны с одними и теми же таблицами в БД то как никрути будут срабатывать блокировки (если в одной сессии)" - если в одной сессии, то блокировок не будет (с кем конфликтовать?)
- " получиться примерно одно время если посылать запросы последовательно, а может быть ещё хуже!" - вот где у людей логика!!!

(128) С точки зрения загрузки библиотеки (не загружайте ее и все работает в штатном режиме)
Если с точки зрения кода - то посмотрите внимательно на служебные процедуры и вы поймете, что они универсальны для 2 режимов (нет компоненты работаю как и раньше последовательно, есть - параллельно).
131 crasler
 
11.02.13
16:00
(130) Про лицензии видимо не так понял сотрудников 1С (почему то у них процессор и сервер один смысл)

СУБД сама разве не параллелит запросы?
Настоящий прирост можно получить только если запаралелить сам код 1С и релизовать что-то вроде блокировок когда идет чтение или изменение одних данных. Блокировки объектов немного не то.
132 gallam
 
11.02.13
16:04
(131)
СУБД параллелит, когда имеет возможность.
Но здесь как раз очень часто параллелизм нельзя использовать.
В решении мы и предлагаем паралеллить выполнение двух запросов 1С, как наиболее длительных в отчете.
133 sapphire
 
11.02.13
16:04
(131)
>>СУБД сама разве не параллелит запросы?
Может запараллелить, а может и не: необходимо смотреть план выполнения запроса.
134 МегаБум
 
11.02.13
16:07
(0) почему не для семерки?
135 sapphire
 
11.02.13
16:09
(132)
>>В решении мы и предлагаем паралеллить выполнение двух запросов 1С, как наиболее длительных в отчете.

Ну... млин.. щас польется.. :(
136 sapphire
 
11.02.13
16:10
(134) для неё тоже можно использовать
137 sapphire
 
11.02.13
16:10
+(136) только в паре с 1С++, но тогда надо ставить на каждую р/с.
138 gallam
 
11.02.13
16:11
(134) В семерке можно использовать в ADO.
1С 77 - это ODBC во-первых, а во вторых: там длительность запроса обусловлена не столько неоптимальностью текста, сколько большим количеством маленьких запросов.

(135) ))
139 sapphire
 
11.02.13
16:12
(138) Хотя, вот с 1С++, могут возникнуть проблемы...
140 gallam
 
11.02.13
16:13
(139) Я умышленно говорю ADO)
141 gallam
 
11.02.13
16:14
+ Но можно без проблем реализовать и для 77, но для 1С 8 - актуальнее
142 crasler
 
11.02.13
16:15
(132)
>> В решении мы и предлагаем паралеллить выполнение двух запросов 1С, как наиболее длительных в отчете.

Отчеты конечно нужная вещь, но всё-таки параллельные вычисления больше необходимы именно при расчетах, например расчет зарплаты, если бы можно было запаралелить данный расчет.
Планируется ли разработка для таких задач?
143 gallam
 
11.02.13
16:18
(142) планируется.
Как раз параллельный расчет ЗП, например, для компании с большим количеством персонала. Он очень подходит для этого.
144 sapphire
 
11.02.13
16:19
(142) Что мешает там параллелить?
145 crasler
 
11.02.13
16:25
(144) Речь не о 2-х трех одновременных процессах, а допустим 15-30, и каждый процесс расчитает данные по сотруднику!
Такое можно реализовать без танцев с бубном? Особенно если требуется расчет в интерактивном режиме!
146 МегаБум
 
11.02.13
16:27
(145) зарплату надо рассчитывать не раз в месяц, а сразу-же по мере ввода, всего-то и делов.
147 gallam
 
11.02.13
16:30
(146) Это если алгоритм простой
и нарушение последовательности нет.
148 sapphire
 
11.02.13
16:33
(146) Ишь та какой, а не всегда так можно сделать.
149 mistеr
 
11.02.13
16:37
(145) Это как? O_O 15-30 процессов в интерактивном режиме...
150 Evrepid
 
11.02.13
16:39
2(0) Простите это не параллельные вычисления, это выполнение запросов только.
А Нуралиев обещал полную параллельность осуществить. правда когда? :)
151 МегаБум
 
11.02.13
16:39
(147) последовательность... Пита на вас нет ))
(148) странно, а не в 1С программах учета зарплаты  даже не в курсе, что так делать нельзя и делают.
152 crasler
 
11.02.13
16:41
(149) Пользователь открыл "Начисление зп" и нажал кнопу "Расчитать", а ему спустя пару минут все расчиталось, а не пришлось ждать десятки минут!!!
153 МегаБум
 
11.02.13
16:43
(152) неверный подход, когда целый месяц процессор простаивает, и только раз в месяц даем ему про$раться
154 crasler
 
11.02.13
16:45
(153) Может потребоваться если нужно быстро пересчитать по какому-то подразделению и т.п.
А так конечно должно расчитываться в фоне, но судя по тому как это реализовано в УПП...
155 gallam
 
11.02.13
16:47
(154) +1
156 Evrepid
 
11.02.13
16:51
2(154) Уже обсуждалось фигову тучу раз.
Считайте по отделам. Затраты процессора в пределах нормы, возможность параллельного ввода документов, минимальная нагрузка при пересчетах.
Нафиг остальные изыски?

Как любит говорить народ: Автоматизация бардака приведет к автоматизированному бардаку.
157 gallam
 
11.02.13
16:51
(150) Вы наверное перепутали - Нуралиев обещал полную параллельность работы пользователей (минимум блокировок), а тут параллельное выполнение последовательных команд (запросов 1С).
158 mistеr
 
11.02.13
16:52
(152) Десятки минут? Это на весь Газпром что ли?
159 Evrepid
 
11.02.13
16:52
2 (157) Ну не... Нуралив и Рупасов много чего обещали. В частности параллельность и многопотоковость...
160 gallam
 
11.02.13
16:54
(156) " Затраты процессора в пределах нормы, минимальная нагрузка при пересчетах " - как раз при параллелизме идет повышенная нагрузка на ресурсы (в идеале по максимуму), но за счет этого минимальное время выполнения.
161 gallam
 
11.02.13
16:56
(158) Такое тоже очень часто бывает: http://www.softpoint.ru/info_id94.htm
162 Evrepid
 
11.02.13
17:00
2(156) Вы поймите, что как уже говорили выше, мощность серверов используется не одномоментно, а растянуто во времени.

Вот пример: 2 землекопа должны за 10 дней выкопать траншею,
1 копает каждый день, 2-й в последний день. кто запарится быстрее? :(
163 Evrepid
 
11.02.13
17:00
2(161) сервер нужен менее мощный в этом случае и все будете успевать. :)
164 Evrepid
 
11.02.13
17:03
это хорошо сказано:
Ожидаемый эффект по производительности:
  Не стоит ожидать большого эффекта от распараллеливания запросов 1С для любых аппаратных ресурсов. На наш взгляд наиболее эффективно распараллеливание, если вы обладаете многоядерным сервером и достаточно производительной СХД.
  Количество потоков определяется обычно количеством ядер и рассчитывается эмпирически на тестовых прогонах.
  Нам на практике удалось уменьшить длительность выполнения и получение выборки 3-х запросов в 2,2 – 2,5 раза. При этом надо помнить, что выполняя параллельно N запросов, требуется заранее спланировать возможное увеличения оперативной памяти rphost.exe для всех выборок параллельно выполняющихся запросов.
165 gallam
 
11.02.13
17:08
(163) надеюсь вы прошли по ссылке и видели показатели и количество сотрудников.
Далее по вашему примеру:
Не все обычно так просто.
Есть сотрудник, он работает каждый день.
Дальше есть менеджер, ЗП у него зависит от того, как хорошо работают сотрудники (например, в течение недели) и от этого различные схемы. И прочее/прочее.

А если у сотрудников разл. коэффициенты.

Вывод: у Вас в практике были только несложные расчеты ЗП.
166 МегаБум
 
11.02.13
17:13
(161) 1 час 40 минут это тоже слишком много, если считать сразу, то вообще ждать не надо. Вообще документа "расчет зарплаты" не должно существовать, сам принцип неверный.
167 Aleksey
 
11.02.13
17:22
(143) считать паралельно по каждому сотруднику?
168 gallam
 
11.02.13
17:23
(167) конечно (если возможно), но ограничить количество потоков в соответствие с вашими ресурсами.
169 mistеr
 
11.02.13
17:24
(161) Охренеть.
170 sapphire
 
11.02.13
17:25
(165) О кстати, о параллелизме.

There is an undocumented trace flag 8649 to set the cost overhead of parallelism to 0. This may provide some relief, but is not a full solution. You can use it in a query hint in the form OPTION(querytraceon 8649).

Источник:
https://connect.microsoft.com/SQLServer/feedback/details/714968/provide-a-hint-to-force-generation-of-a-parallel-plan#details
171 FoxFox
 
11.02.13
17:29
(146) Если б так просто было в реальности.. Например, у нас как правило, по окончании месяца в течение очень короткого времени несут всякие проценты, показатели, табеля, без которых невозможен полный расчет зп, и в итоге на обсчете нескольких тысяч сотрудников программа встает колом из-за взаимоблокировок. Частично разрулили управляемыми блокировками, но где-то местами и они не помогают..
172 МегаБум
 
11.02.13
17:50
(171) насчет блокировок при совместной работе - если расчетчиков несколько, нет никакого смысла им сидеть в одной базе, все равно каждый отвечает за определенное подразделение/отдел. И зачем запускать обсчет нескольких тысяч сотрудников, все равно в каждый момент времени расчетчик работает с каким-то определенным сотрудником или отделом, вот сразу же и рассчитывать все что можно, и пофиг, к примеру, что вместо просто НДФЛ будет НДФЛ в части оклада, НДФЛ в части премии, НДФЛ в части больничного и т.п.
173 FoxFox
 
11.02.13
18:41
(172) В том-то и дело, что на каждый отдел свой документ, но в нем может быть сколько-то тысяч строк (внутри отдела может туева хуча совмещений), которые при записи в регистр расчета блокируют таблицу напрочь, отрубая вычисления других расчетчиков (а конфа устроена так, что в процессе расчета она постоянно пишет наборы записей, считает, снова пишет и т.д.).
Плодить распределенные базы тоже не оч хороший вариант, поскольку кадровиками параллельно могут довводиться  всяческие вытеснения, перемещения и пр. движения, и тут еще надо не профукать, все ли данные для расчета по сотруднику пришли из другой базы.
174 serffer
 
11.02.13
20:00
(0) Дорогой автор, Вы видели в СКД у источника данных есть путь к Кластеру серверов( или еще както он называется). вроде сейчас он не работает.
но вот 8.3(сам не тестил) добавились фичи в кластере. и сдается мне что на 8.3 "Объединение" наборов данных будет(сейчас или в скором времени) работать параллельно через этот механизм.

одним словом - ГодаНеПройдет
175 gallam
 
11.02.13
21:29
(174) кластер 1с или Ms SQL?
И конечно не понятно описание - что то есть, сам не видел и не тестировал...
Ещё раз повторюсь - предлагается вариант для реализации параллелизма в 1с, а не решение всех проблем (хотя было бы супер).
176 sanfoto
 
12.02.13
08:10
(175) gallam,
Про параллельное выполнение запросов безусловно "+".

Вот кстати вопрос по смежной теме что там у Вас с "Кластером Софтпоинт"? - удалось достичь скорости сервера "все в одном"? )).

Уж простите за подковырку - но даже Oracle в RAC -не удалось масштабировать больше ДВУХ серверов (коэф 0.95) - без значительного падения коэф. масштабирования.
Масштабирование имеется ввиду ПОЛНОЕ а не ГОРИЗОНТАЛЬНОЕ.
177 YHVVH
 
12.02.13
08:29
(0) не понятно не фига, чем от фоновых отличается.
178 sanfoto
 
12.02.13
08:31
(177) YHVVH
с фоновыми ВЫЯ...СЯ приходится, а здесь типо все проще))
179 YHVVH
 
12.02.13
08:31
(178) понятно теперь
180 gallam
 
12.02.13
09:32
(177) Кластер удалось реализовать
почитать можно:
http://www.softpoint.ru/products_id15.htm
http://www.softpoint.ru/products_id335.htm

Это два разных решения.
, в феврале-марте проводим официальное тестирование на мощном оборудовании, от его результатов многое зависит.
После первичного тестирования 70-80% нагрузки можно распределить для 1С 8.

p.S> 0,95 - очень хороший результат.
181 Fragster
 
гуру
12.02.13
09:33
блин, а я на нодежс диспетчер потоков пишу...
182 Fragster
 
гуру
12.02.13
09:33
для 1с :)
183 gallam
 
12.02.13
09:33
(178)
+1 А также быстрее и меньше ресурсов.
184 gallam
 
12.02.13
09:58
(181) А для какой задачи?
185 Fragster
 
гуру
12.02.13
09:59
(184) в общем случае - для всего, что не блокирует друг друга, например для восстановления последовательности или там массового удаления/добавления записей в регистре и т.п.
186 gallam
 
12.02.13
10:08
(185) Уже обсуждалась в ветке основная проблема удаления/добавления записей регистра - транзакция.
По поводу восстановления последовательности - тоже писали, можно применить, когда ресурсы пересечения распределены равномерно по ряду групп (как раз для таких вещей, как восстановление последовательности для партионки - это сложнореализуемо).
187 Fragster
 
гуру
12.02.13
10:12
(186) так как раз и диспетчер нужен, когда группы неравномерные
188 Fragster
 
гуру
12.02.13
10:13
очередь с с графом зависимостей
189 gallam
 
12.02.13
10:18
(187) Я имел в виду, что когда группы неравномерные, например, одна 95% и остальные 5%, то смысла большого в параллельном выполнении нет (эффект максимальный - длительность 5%).
190 Fragster
 
гуру
12.02.13
10:21
(189) ну, тут уже надо курить, чтобы групп было больше, например делать из подчиненного РС неподчиненный и т.п.
191 Evrepid
 
12.02.13
12:21
2(165) Ошибаетесь.
И проценты от выработки были и просто процентов от оклада, и по табелю и от процентов продаж и т.д.
192 extrim-style
 
12.02.13
16:31
(0) а увеличить быстродействие EKLib.dll с помощью этой технологии нельзя? Или распараллелить то, что на входе?
193 gallam
 
12.02.13
16:43
(192) Честно скажу, что с EKLib.dll почти не работали. Если скинете более подробную информацию (код 1С для нее), описание задачи, и будут после анализа обнаружены запросы для параллельного выполнения, то можно доработать.
194 gallam
 
12.02.13
16:44
+ Если EKLib.dll = ЕК Софт
195 extrim-style
 
12.02.13
16:48
(194) конечно "равно", поэтому и спрашиваю.
Ясно. Вобщем тема не раскрыта. Просто удочку закинул.
196 extrim-style
 
12.02.13
16:50
(193) сорри, я вас перепутал с ними...
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.