|
Как ускорить работу функции добавления в очередь выгрузки? | ☑ | ||
---|---|---|---|---|
0
Pentosh
06.02.17
✎
16:03
|
Здравствуйте, уважаемые.
Подскажите, пожалуйста, как ускорить выполнение функции которая создает (в худшем случае, ~350т. записей в регистре сведений)? Самописная конфа, 8.3.7, УФ. Ситуация в следующем. Выполняю задание по интеграции с Апи сайта, мне нужно на него отправлять данные при их редактировании, для этого создаю очередь в РС, в которую записываю Json строку для выгрузки (подготавливаю данные заранее). И когда дошло дело для записи данных о изменении цен на номенклатуру появились проблемы с производительностью данной функции. т.е. создаю док, провожу его, записывается набор данных, я перехватываю эту запись и на ее основе делаю записи в очереди, в худшем случае (пересчет всех номенклатуры) это около 350тыс. записей, для каждой из них, я делаю запросы на получение нужных мне данных из базы (возможно тут и кроется все зло), и потом просто записываю в РС. В обычном состоянии (без записи в очередь) такой док. отработает за 45 минут, а с очередью это может занять 3-5 часов, что не есть гуд. В связи с чем, прошу совет у знатоков, что делать/что читать/куда смотреть? |
|||
1
shuhard
06.02.17
✎
16:08
|
||||
2
Pentosh
06.02.17
✎
16:11
|
Типо того происходит :) И кстати, ошибся, сначала формируется набор с данными для записи, а потом просто в цикле записывается. |
|||
3
Pentosh
06.02.17
✎
16:12
|
(1) спасибо, но лучше что нибудь из бесплатного.
|
|||
4
Pentosh
06.02.17
✎
16:12
|
(1) и эта задача, более чем уверен, не стоит этих денег :)
|
|||
5
FIXXXL
06.02.17
✎
16:17
|
(4) ну тогда замер производительности хотя бы глянь
у тебя в коде выше еще вызовы процедур идут, что там внутре - хз смотри замер |
|||
6
Pentosh
06.02.17
✎
16:18
|
Поможет ли мне то, что я укажу буквально когда начать и закончить транзакцию, т.е. сейчас это 1С делает автоматически, я транзакциями не управляю.
Если все манипуляции записью порции данных убрать в одну транзакцию, ускорить ли это? |
|||
7
mistеr
06.02.17
✎
16:18
|
(0) >В обычном состоянии (без записи в очередь) такой док. отработает за 45 минут, а с очередью это может занять 3-5 часов, что не есть гуд.
Да и в обычном состоянии 45 минут это вери бэд. Найди способ вытянуть все одним запросом. Тут может помочь план обмена. И записывай не в РС, а в JSON файл. |
|||
8
FIXXXL
06.02.17
✎
16:26
|
(6) запись в РС - само по себе затратное занятие
как выше писали: узел обмена, читай изменения, выгружай, зачищай изменения после подтверждения |
|||
9
Pentosh
06.02.17
✎
16:31
|
(7) Про обычное состояние: Это 35 тысяч номенклатуры * на 19 ценовых группы столько записей он генерирует (хоть и расчеты там тривиальные). Но согласен, там много косяков которые буду исправлять и улучшать.
(5) про замер это вы хорошо напомнили, совсем забыл, спасибо. (8) тут все сложнее, мне нужно именно каждое состояние номенклатуры или другого объекта сохранять, т.е. изменил номенклатуру (наименование изменил) - создал запись в очереди и выгрузил, изменил туже номенклатуру - создал/ выгрузил и т.д., в предложенном вами варианте получится так: изменил, изменил, создал запись в очереди/выгрузил. Надеюсь понятно объяснил, что хотел) Т.е. веду, так сказать, историю состояния объекта (сейчас сказать, зачем это нужно не могу, уже много воды утекло с момента когда решили делать именно так) |
|||
10
FIXXXL
06.02.17
✎
16:38
|
(9) выгрузка+версионирование?
|
|||
11
Pentosh
06.02.17
✎
16:39
|
(10) получается типо того, только более упрощена.
|
|||
12
Pentosh
06.02.17
✎
16:44
|
и еще 1 очень важный момент, почему именно так.
очень важен порядок, т.к. много ссылок друг на друга и чтобы перед созданием записи ссылкой на другую та запись уже гарантированно была. С изменениями будет проблематично (основываясь на тех немногих знаниях о них) такое осуществить. |
|||
13
Pentosh
06.02.17
✎
16:48
|
(1) кстати, спасибо за ссылку, сообразил что можно по содержанию курса посмотреть оглавления возможных решений.
|
|||
14
Вафель
06.02.17
✎
17:03
|
добавляй только ссылку при проведении.
После рег заданием генерируй джсон и выгружай |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |