| 
    
        
     
     | 
    
  | 
Как ускорить работу функции добавления в очередь выгрузки? | ☑ | ||
|---|---|---|---|---|
| 
    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 
 | 
         
        добавляй только ссылку при проведении.
 
        После рег заданием генерируй джсон и выгружай  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |