|   |   | 
| 
 | КД. Как ускорить загрузку? | ☑ | ||
|---|---|---|---|---|
| 0
    
        San335 24.11.20✎ 09:01 | 
        Доброго дня!
 Подскажите плиз, есть ли какие рекомендации, либо приемы на оптимизацию этапа загрузки данных по правилам КД? Переношу по типовому правилу данные из одной типовой конфигурации в другую, но времени уходит катастрофически много. Конечно и объем данных большой, но хотелось бы понять, как ускорить его загрузку. Загруженности оборудования нет! | |||
| 1
    
        Фрэнки 24.11.20✎ 09:51 | 
        И откуда бы она взялась-то... это самая загруженность...
 Дело не в самих правилах КД, а в режиме работы самой базы. Реальное ускорение можно получить только если база окажется в абсолютно монопольном доступе, т.е. не будет ни одного лишнего сеанса. Если это в файловом режиме, то это обеспечить просто - в одной базе один активный пользователь. А если необходимо выполнять загрузку данных в базу непосредственно в клиент-серверном режиме, то будет иметь сильное значение версия платформы и нужен монопольный доступ, чтоб ни одна зараза на рпхост с процессом загрузки не покушалась - другими словами, нужна полная изоляция процесса загрузки от потенциальных конкурентов на блокировки. з.ы. О наличии рассуждений, что блокировки возникают только в одной базе и т.д. и т.п. - я все эти рассуждения уже слышал. При малом числе пользователей на сервере нужно включать опцию "одна база на процесс" и заходить в базу только одним активным пользователем. з.з.ы. Кстати, о том, что только один активный пользователь в базе очень приоритетно, это можно видеть на типовом процессе обновления самых свежих конф, в котором любые иные сеансы автоматически блокируются, кроме админа. | |||
| 2
    
        San335 24.11.20✎ 10:01 | 
        (1) В базе работаю только я.Пробовал загрузку как с блокировкой регламентных заданий, так и без. А вот то, что 1 rphost конкретно только на меня не учел. На серваке херова народ работает в других базах, на этом же процессе.     | |||
| 3
    
        Фрэнки 24.11.20✎ 10:30 | 
        (2) ну вот забери все себе на локаль, тогда и станет понятно, есть шансы как-то ускорить процесс, ну и само собой, что комп должен быть более-менее шустрый.
 А многопользовательский сервак... ну то такое... | |||
| 4
    
        Йохохо 24.11.20✎ 10:32 | 
        (3) свежие и3 несвежие ксеоны и в хвост и в гриву)     | |||
| 5
    
        VladZ 24.11.20✎ 10:33 | 
        (0) "Загруженности оборудования нет!" - по каким параметрам определяешь загруженность оборудования?     | |||
| 6
    
        VladZ 24.11.20✎ 10:34 | 
        +5 База файловая? Или клиент-сервер?     | |||
| 7
    
        Фрэнки 24.11.20✎ 11:01 | 
        (6) он ответил в (2)     | |||
| 8
    
        Garykom гуру 24.11.20✎ 11:06 | 
        (0) В случае sql базы 1С только отказ от КД и переход на свой обмен, с использованием много потоков/фоновых на сервере.     | |||
| 9
    
        Garykom гуру 24.11.20✎ 11:08 | 
        XML имхо тормозной и когда все данные (объекты) в одном файле это не позволяет распараллелить процесс выгрузки/загрузки.
 JSON лучше для этого подходит и писать разные объекты (элементы справочников, документы и записи регистров) в разный файлы или сообщения. Сообщения это использование RabbitMQ или аналоги. | |||
| 10
    
        Garykom гуру 24.11.20✎ 11:10 | 
        (2) свежий rphost он многопоточный из коробки, там упирается в ядра/потоки сервера
 несколько rphost есть смысл держать только для повышения надежности если часто падает с точки зрения экономии ram лучше один rphost ибо несколько для одной базы/конфы будут дублировать конфу и кушать лишнюю оперативку | |||
| 11
    
        San335 24.11.20✎ 12:09 | 
        (9) Свой обмен не вариант, т.к. используются типовые правила для ЗУП(немного мной переделанные).     | |||
| 12
    
        RomanYS 24.11.20✎ 12:12 | 
        (0) Причин может быть две: реально большой объем данных или неоптимальный код в правилах     | |||
| 13
    
        San335 24.11.20✎ 12:18 | 
        (12) Данных объем большой.Но для примера если взять выгрузку "Начальная ШР". 3 организации выгружаются примерно 6-7 часов. А если сделать связку сотрудников не с филиальной организацией, а головной, но время увеличивается с 7 до 21 часа(((     | |||
| 14
    
        Вафель 24.11.20✎ 12:20 | 
        (9) жсон от хмл отличается только формой скобочек     | |||
| 15
    
        Вафель 24.11.20✎ 12:21 | 
        распараллелить можно, но нужно отказаться от выгрузки по ссылкам     | |||
| 16
    
        San335 24.11.20✎ 12:36 | 
        (15) Доводилось сталкиваться с переводом ЗУП на версию 3.1?     | |||
| 17
    
        VladZ 24.11.20✎ 12:52 | 
        (7) Да, уже увидел.     | |||
| 18
    
        Garykom гуру 24.11.20✎ 13:39 | 
        (14) нет это не так
 совершенно другой принцип и устройство сериализаторов/парсеров | |||
| 19
    
        mistеr 24.11.20✎ 13:48 | 
        Все такие эксперты в исцелении по фотографии.
 Я бы посоветовал сначала найти узкое место. | |||
| 20
    
        Фрэнки 24.11.20✎ 14:04 | 
        (19) узкое место искали еще в прошлой ветке. У ТС это уже не первая об этом самом переносе данных из старого ЗУП в новый ЗУП     | |||
| 21
    
        Сияющий Асинхраль 24.11.20✎ 14:58 | 
        Вопрос в (0) конечно актуальный, сам так и не нашел на него ответа. На хорошей по размеру базе УПП загрузка цен шла порядка десяти дней :-( , это был конечно пробный вариант, но рабочий с такой скоростью запустить так и не решились :-(     | |||
| 22
    
        d4rkmesa 24.11.20✎ 15:07 | 
        (13) Насколько большой объем?     | |||
| 23
    
        Garykom гуру 24.11.20✎ 15:46 | 
        (13) Проведи тест.
 Всю выгрузку подели на 2-4 части и проверь сколько будет загрузка параллельно через "Универсальный обмен данными в формате XML" на одной базе если несколько сеансов | |||
| 24
    
        Garykom гуру 24.11.20✎ 15:48 | 
        И да обмен через json примерно в два раза шустрей чем xml
 Особенно самописный без правил а с прямым преобразованием кодом | |||
| 25
    
        timurhv 24.11.20✎ 16:25 | 
        (13) Так выгрузка или загрузка?
 Раньше при переходе на редакцию 3.1 нужно было изменить порядок измерений в регистре (параметры запроса не попадали в индекс), ускорялся перенос раз в 5-10. | |||
| 26
    
        d4rkmesa 24.11.20✎ 16:32 | 
        (24) Ну самописный писать довольно долго, вряд ли это выход для ТС.     | |||
| 27
    
        Aswed 24.11.20✎ 16:35 | 
        (0) Легко. Но надо смотреть на сами правила.
 Я оптимизировал правила, с увеличением скорости загрузки в 20 с копейками раз, тупо убирая перезапись объекта если он есть в базе. Тут универсального механизма нет. | |||
| 28
    
        timurhv 24.11.20✎ 16:41 | 
        (27) + часто виды начислений анализируются\перезаписываются. Мы вызывали процедуру 1 раз после загрузки всех данных.     | |||
| 29
    
        Фрэнки 24.11.20✎ 17:00 | 
        (25) у него выгрузка, судя по его прошлым ответам, формируется примерно одинаковое время, вне зависимости от выбранных настроек. 
 А вот загрузка начинает дико тормозить, если выставляют перед выгрузкой привязку работников к филиальной структуре. ХЗ, почему они там у себя не хотят установить такие подробности данных уже после загрузки, зачем им прямо в загрузке нагружать все такими данными, которые превращают процесс загрузки в невыполнимый квест. | |||
| 30
    
        Фрэнки 24.11.20✎ 17:03 | 
        По идее, в результате всех этих невероятных усилий, должна заполниться ТабЧасть документа Начальная Штатная Расстановка. Просто немного странная и путанная структура данных в каждой строке ТЧ.
 Но все нужные данные в базе уже записаны и к моменту создания ТЧ у этого документа там возможна перезапись уже записанных ранее, но и то, не факт, что они в действительности должны быть перезаписаны. | |||
| 31
    
        San335 25.11.20✎ 08:41 | 
        (25) Загрузка в 3.1. Работаю с типовой обработкой по переносу(Помощник перехода с прежних программ). Можешь подробнее про манипуляции с измерениями написать, после которых ускорился перенос???
 Мне сейчас любые средства хороши) | |||
| 32
    
        San335 25.11.20✎ 08:43 | 
        (27) Можешь написать, как убрать эту перезапись? Что-то я туплю....как раз перезапись существующих, а не добавление новых элементов в ЖР пишется и забирает на себя львиную долю времени!     | |||
| 33
    
        San335 25.11.20✎ 08:44 | 
        (28) Эту же проблему по ЖР наблюдаю. Напиши, плиз, как реализовать то, что ты написал?     | |||
| 34
    
        San335 25.11.20✎ 08:46 | 
        (29) "ХЗ, почему они там у себя не хотят установить такие подробности данных уже после загрузки, зачем им прямо в загрузке нагружать все такими данными, которые превращают процесс загрузки в невыполнимый квест." - все очень просто. В 2.5 была не верная привязка данных по филиалам и головной организации, в 3.1. сказали это дело исправить.     | |||
| 35
    
        San335 25.11.20✎ 08:49 | 
        Тут вопрос в длительности загрузки даже не чисто штатки. Этап "Кадровые данные" - более 2-х дней, "Учет среднего заработка" - более 2-х дней, "Учет НДФЛ" - чуть более суток.     | |||
| 36
    
        Sиlьver 25.11.20✎ 08:58 | 
        (35)Замеры производительности что-то говорят?
 Когда-то давным давно сталкивался с тормозами обмена на КД. Заметил, что при распухании регистра сведений СоответствиеОбъектовИнформационныхБаз происходит очень медленная запись в него. К счастью у меня данные по УУИДам соответствовали и я мог себе позволить отключить использование этого регистра. Как временное решение могу посоветовать перевести базу в файловый режим, положить ее на комп с хорошим процом (с высокой тактовой частотой, количество ядер не важно) и SSD и прокачать данные. Должно быть гораздо шустрее. | |||
| 37
    
        Ёпрст гуру 25.11.20✎ 09:09 | 
        (0) дык правила смотри, чтоб все объекты выгружались только по ссылке(точнее, чтоб точно гуид ссылки выгружался, а не сам объект со всеми реквизитами).
 + Галки там смотри, чтоб только новый объект записывался или модиффицированный. Если реквизиты не поменялись, не записывай | |||
| 38
    
        San335 25.11.20✎ 09:19 | 
        (36) Замеры каких-то тормозов не показали. РС "СоответствиеОбъектовИнформационныхБаз" судя по ЖР тоже не участвовал в медленных загрузках.     | |||
| 39
    
        San335 25.11.20✎ 09:20 | 
        (37) Ты имеешь ввиду, что у правил, в которых предполагается не создание, а только перенос ссылки выставить галки "Не замещать существующие объекты в приемнике при загрузке, а только создавать новые" + "Не создавать новый объект, если он не найден"?     | |||
| 40
    
        Ёпрст гуру 25.11.20✎ 09:26 | 
        Не..там есть еще галка, чтоб при выгрузке для реквизитов ссылочного типа выгружался только гуид мсылки. + Если загрузка идет через поделку универсальный обмен хмл, то в ней поправить, чтобы записать было только, если объект модифицированн.     | |||
| 41
    
        Фрэнки 25.11.20✎ 09:57 | 
        (35) На мое мнение (постороннего человека), тут проблема все-таки не совсем в правилах. То, что правила будут неоптимальными для производительности - этого никто и никогда не себе не представлял. В любом случае, все эти правила придуманы просто по максимуму корректной передачи самих данных. Да, вполне возможно, что где-то и когда-то будут излишние дублирования записывания уже существующих записей, но! Это же надо каждый раз не просто принимать решение, что уже существующую по ссылке запись перезаписывать не нужно, а нужно всякий раз проверять все поля перезаписываемой записи - новая там информация на момент обработки текущих данных или нет.
 Мало того, для связи с наборами текущих данных в один момент времени может быть одно состояние в полях всех записей набора, а в другой момент уже другое. И оно каждый раз будет верным, но только в том текущем. Короче говоря, я бы свел к минимуму все чрезвычайно длительные процедуры переноса и вносил изменения в уже записанные данные, условно говоря, после основного переноса. Например, // В 2.5 была не верная привязка данных по филиалам и головной организации, в 3.1. сказали это дело исправить // Исправляй это не штатным переносом данных, а уже после него - внеси изменения в данные в новой базе, но до начала работы пользователей и ввода новых документов пользователями. Проблема только в том, что когда пользователи начнут вводить и проводить новые документы, то они потянут ссылки на кривые данные, причем, кривизна не в том, что перенесено что-то не то, а что фактическая инфа не соответствовала состоянию учета и до переноса. Переносить нужно не новое, а нужно переносить без искажений. Для новой базы новое и верное состояние данных устанавливать не путем исправления в старой, а исправления уже в новой. Ну я думаю, что смысл моих рассуждений уже понятен :-) | |||
| 42
    
        San335 25.11.20✎ 10:33 | 
        (40) "там есть еще галка, чтоб при выгрузке для реквизитов ссылочного типа выгружался только гуид мсылки." это в самих Правилах? Просмотрел ПКО и ПКС, похожей галочки не нахожу. Я чисто помощником перехода пользуюсь. Универсальный обмен хмл напрямую не использую.     | |||
| 43
    
        San335 25.11.20✎ 12:48 | 
        (27) В самих ПКО выставлял галку "Не замещать существующие объекты в приемнике при загрузке...", но при загрузке все равно вижу, как этот объект перезаписывается..     | |||
| 44
    
        Фрэнки 25.11.20✎ 12:53 | 
        (43) там нужно ходить отлдчиком. Часть как-бы правил не действительна, если отладчиком добраться до исполняемых действий.     | |||
| 45
    
        Фрэнки 25.11.20✎ 13:00 | 
        т.е. вроде и правила - а как особые условия, то и пофиг оказываются все эти правила.     | |||
| 46
    
        timurhv 25.11.20✎ 15:07 | 
        (31) Регистр сведений "Плановый ФОТ" выставлял в редакции 3.1.7:
 Сотрудник, Начисление, ГоловнаяОрганизация, ДокументОснование, ФизическоеЛицо, ДатаОкончания, Год Посмотрел в 3.1.14 и 3.1.15 - уже поправили. (33) Общий модуль УправлениеШтатнымРасписанием.ПрименитьИзменениеНастроекШтатногоРасписания - закомментируйте код. После загрузки всех данных вернуть обратно, сделать экспортной и вызвать из обработки. В новой редакции может еще где тормозов добавили - надо смотреть. Грузил на i7 + SSD. | |||
| 47
    
        Pro-tone 25.11.20✎ 15:30 | 
        (0) есть способ - записывать только измененные объедки, но в функционале КД (обработка обменXML) его нет, и что там есть галка в КД2 - это фуфел, она нерабочая, потрать время, напиши код сравнения значений свойств и пиши только измененные объедки, это дает до 25% выигрыш при загрузке     | |||
| 48
    
        Pro-tone 25.11.20✎ 15:32 | 
        + (47) я в своей нетленке http://catalog.mista.ru/public/461158/ так и сделал     | |||
| 49
    
        Mikhail Volkov 27.11.20✎ 08:44 | 
        Документы продажи имеют ссылки (являются основанием) в других документах: оплаты, СФ... Прописал для пробы:
 Если Не Отказ И Параметры.ЗагруженныеДокументы.Найти(Источник) = Неопределено Тогда Параметры.ЗагруженныеДокументы.Добавить(Источник); ИначеЕсли Не Отказ Тогда Если Параметры.Комментировать Тогда Сообщить("Уже выгружен: " + СокрЛП(Источник), СтатусСообщения.Информация); КонецЕсли; Отказ = Истина; КонецЕсли; В результате: Начало выгрузки: 27.11.2020 9:47:49 Окончание выгрузки: 27.11.2020 9:52:33 Время выгрузки: 4:44 Начало выгрузки: 27.11.2020 10:03:01 Окончание выгрузки: 27.11.2020 10:06:15 Время выгрузки: 3:14 - значительно ускорилась выгрузка на 30%. Раньше думал, что объекты выгружаются только раз, сама КД2 это контролирует. Может галочки какие-то забыл поставить? | |||
| 50
    
        Mikhail Volkov 27.11.20✎ 14:16 | 
        А при загрузке ошибки... не, не годится. Годится для случаев, когда документ только пишется в файл выгрузки. Если не впервые, то можно не писать. А для получения ссылки в другом документе это не годится.     | |||
| 51
    
        Mikhail Volkov 27.11.20✎ 18:36 | 
        Обычно когда в документе присутствует ссылка другого документа в его ПКС пишутся в Источник ссылка этого другого документа, в Приемник - его ссылка в приемнике, и имя ПКО. Если этот другой документ уже выгружался, то вместо этого можно обратиться к массиву ЗагруженныеДокументы, и получить из него его ссылку в приемнике. Это было бы быстрее, чем его выгружать заново. Возможно ли такое?     | |||
| 52
    
        Mikhail Volkov 28.11.20✎ 06:00 | 
        + Есть возможность избежать многократную выгрузку одного и того же объекта?     | |||
| 53
    
        Cyberhawk 28.11.20✎ 10:07 | 
        (10) Что значит "свежий"? Абсолютно с самого начала 8.0 он всегда был многопоточным.     | |||
| 54
    
        Конструктор1С 28.11.20✎ 10:34 | 
        (0) ничего не сделаешь. КД редкостный тормозок. Гиговый файл XML стандартный обмен проглотит за несколько минут, а КД будет тупить до нескольких часов     | |||
| 55
    
        ДенисЧ 28.11.20✎ 10:52 | 
        (51) (52) Вообще-то это штатно так и работает...     | |||
| 56
    
        Mikhail Volkov 28.11.20✎ 11:14 | 
        (55) Время выгрузки не очень напрягает, а вот время загрузки... Вообще-то не смотрел файл выгрузки, есть ли в нем повторение выгрузки одного и того же объекта? Вроде КД2 должно само это контролировать, или в настройке что-то надо ставить... Что?     | |||
| 57
    
        ДенисЧ 28.11.20✎ 11:16 | 
        (56) ещё раз. Медленно (по слогам не буду, извини).
 КД2. Повторно. Один и тот же объект. В один файл. Не. Выгружает. Так понятней? Или ещё медленней повторить? | |||
| 58
    
        Mikhail Volkov 28.11.20✎ 11:21 | 
        (57) Всегда, или по настройкам?     | |||
| 59
    
        ДенисЧ 28.11.20✎ 11:33 | 
        (58) По настройкам. Есть галка "Не запоминать выгруженные объекты", вот она, вроде, приводит к повторной выгрузке, но это надо код смотреть, так не помню     | |||
| 60
    
        Mikhail Volkov 28.11.20✎ 12:31 | 
        (59) Да, есть... но она наверное влияет на запись объекта в файл выгрузки. А на формирование объекта в приемнике - нет, повторяется. Ну, это влияет только на время выгрузки - не критично.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |