|
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) сорри, я вас перепутал с ними...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |