|   |   | 
| 
 | Узкое место при контроле удаления объектов | ☑ | ||
|---|---|---|---|---|
| 0
    
        xenos 07.02.15✎ 07:05 | 
        Есть база в которой надо сделать свертку. Сама свертка проходит нормально, а вот с удалением объектов не очень хорошо получается.
 После свертки оказывается 200 000 объектов. Организация не работает только в суботу, т.е. на удаление есть около 30 часов. В прошлую субботу процесс контроля шел 18 часов, но так и не дождался конца. Даже если взять базу с нуля там есть 1700 объектов помеченных на удаление которые довольно долго удаляются. Пробовал SSD и DiskRam но все равно время занимает десятки минут. Память по диспечеру используется не так чтобы много, до предела очень далеко. Единственное, что процесс 1Cv8 использует процессор по "максимуму" на 25% при 4х ядрах. Какую часть компьютера надо ускорить, чтобы контроль удаления быстрее шел? Может быть надо ускорить работу с файлами кэша, подкачки? | |||
| 1
    
        wertyu 07.02.15✎ 07:15 | 
        непосредственно не предлагать с выгрузкой-загрузкой?     | |||
| 2
    
        xenos 07.02.15✎ 07:23 | 
        (1) 
 > непосредственно не предлагать Как бы не желательно. > с выгрузкой-загрузкой? Это как? | |||
| 3
    
        Мимохожий Однако 07.02.15✎ 07:25 | 
        Фоновым заданием по ночам кусочками     | |||
| 4
    
        xenos 07.02.15✎ 07:26 | 
        (3) А это как?     | |||
| 5
    
        wertyu 07.02.15✎ 07:27 | 
        (2) ты же всё равно удалишь, записывай
 это чтобы удалить, вместо упаковки | |||
| 6
    
        xenos 07.02.15✎ 07:29 | 
        (5) > ты же всё равно удалишь, записывай 
 Те которые привязаны удалять не хотелось бы. | |||
| 7
    
        wertyu 07.02.15✎ 07:31 | 
        (6) если сомневаешься, зачем это вообще?     | |||
| 8
    
        xenos 07.02.15✎ 07:36 | 
        (7) Хочу удалить по правилам.     | |||
| 9
    
        Мимохожий Однако 07.02.15✎ 07:37 | 
        (4)Посмотри в УТ11 и БП3.0 регламентное задание по удалению.
 (8)Какие правила? | |||
| 10
    
        xenos 07.02.15✎ 07:43 | 
        (9) > Посмотри в УТ11 и БП3.0 регламентное задание по удалению.
 1. БП 2.0 2. Вариант файловый. > Какие правила? Контроль на ссылки. Если удалять непосредственно, то могут дыры оказаться. | |||
| 11
    
        zalexey 07.02.15✎ 07:46 | 
        Делаешь план-обмена "Полный". В процедуре "ПриОтправкеПодчиненному" прописываешь условия, что документы меньше такой-то даты не выгружать.
 Сворачиваешь базу на указанную дату. Создаешь начальный образ - это и будет новая база. Отвязываешь ее от УРБД. | |||
| 12
    
        Мимохожий Однако 07.02.15✎ 07:46 | 
        (10)Что тебя останавливает? Регламентное задание не использует формы, поэтому может подойти. Самое сложно - разобраться как работает. На инфостарте были обработки по удалению в фоновом режиме.     | |||
| 13
    
        wertyu 07.02.15✎ 07:48 | 
        (10) ну ты же не на рабочей сразу? что тебя останавливает? Записывай     | |||
| 14
    
        xenos 07.02.15✎ 08:06 | 
        А если вернутся к изначальному вопросу: что тормозит выполнение?
 Проц? | |||
| 15
    
        wertyu 07.02.15✎ 08:09 | 
        (14) память     | |||
| 16
    
        ShoGUN 07.02.15✎ 08:11 | 
        (14) Проц. Само удаление не занимает много времени, много времени занимает поиск ссылок, а это процессорное время. К сожалению, хоть что-то делать многопоточно умеет только сервер 1С, клиент не умеет.
 (15) Читай внимательно, у него файловая. | |||
| 17
    
        wertyu 07.02.15✎ 08:13 | 
        (16) память )     | |||
| 18
    
        ShoGUN 07.02.15✎ 08:16 | 
        (17) Как проверял? Ну это не считая того, что клиент 32-битный.     | |||
| 19
    
        xenos 07.02.15✎ 08:18 | 
        (16) Т.е. сервер может ускорить?     | |||
| 20
    
        ShoGUN 07.02.15✎ 08:19 | 
        (19) см (3). Только не одним заданием, а несколькими, по числу ядер. Но там уже может случиться другое узкое место.     | |||
| 21
    
        wertyu 07.02.15✎ 08:20 | 
        (19) если памяти много, за секунды     | |||
| 22
    
        xenos 07.02.15✎ 08:21 | 
        (20) У клиента сервер не поставить, только если у себя.     | |||
| 23
    
        ShoGUN 07.02.15✎ 08:22 | 
        (22) Тогда проще не удалять старое(его больше) а перенести новое в новую базу.     | |||
| 24
    
        alle68 07.02.15✎ 08:22 | 
        (14) Алгоритм. Никакое железо не победит неверный подход к процессу.     | |||
| 25
    
        xenos 07.02.15✎ 08:26 | 
        (23) > Тогда проще не удалять старое(его больше) а перенести новое в новую базу.
 ВыгрузкаЗагрузка XML и на самые массовые объекты поставить условие чтобы помеченные на уделение не выгружались? | |||
| 26
    
        ShoGUN 07.02.15✎ 08:26 | 
        (25) Например так. Или распределёнка, как в (11).     | |||
| 27
    
        ShoGUN 07.02.15✎ 08:27 | 
        +(26) Вообще не выгружать помеченные на удаление документы раньше какой-то даты.     | |||
| 28
    
        xenos 07.02.15✎ 08:49 | 
        (27) Что за бред. А если на них остатки висят на 60.62 счете по субконто документы расчетов? Или они в регистре УСн как докумен поступления расходов?     | |||
| 29
    
        Провинциальный 1сник 07.02.15✎ 08:50 | 
        (21) А при чем тут память, если упирается в проц?     | |||
| 30
    
        ShoGUN 07.02.15✎ 08:51 | 
        (28) Если это так - они по ссылкам должны выгрузиться. У тебя документ ввода остатков введён? Вот из него по ссылкам выгрузятся нужные документы. КД пользовался?     | |||
| 31
    
        xenos 07.02.15✎ 08:55 | 
        (30) Если контроль удаления так долго ищет ссылки, то почему выгрузка будет быстрее искать?     | |||
| 32
    
        ShoGUN 07.02.15✎ 08:57 | 
        (31) Что ж ты тугой такой. Что дольше - поиск ссылок, содержащихся в объекте, или поиск ссылок во всей базе на этот объект?     | |||
| 33
    
        xenos 07.02.15✎ 09:02 | 
        (32) Хм возможно     | |||
| 34
    
        ProxyInspector 07.02.15✎ 13:15 | 
        Тормозит алгоритм. Из всех возможных алгоритмов 1С использует самый тормозной. Вот в этой теме мы все осудили Как лучше всего удалять большое количество объектов (порядка 100 000) 
 Резюме такое: для 200 тыс объектов время поиска штатной обработкой объектов, которое можно удалить составит 10 суток, но уже через сутки обработка у тебя отвалится из за нехватки памяти. Вариантов два: 1. Переписать обработку по удалению объектов. И удалять объекты порциями по 10 тыс. элементов. В монопольном режиме с помощью функции УдалитьОбъекты(). С контролем ссылочной целостности удаление займет 4-7 часов. 2. Написать функцию по поиску объектов без ссылок. И тогда можно удалить твои 200 тыс. объектов за час. | |||
| 35
    
        ProxyInspector 07.02.15✎ 13:20 | 
        Я столкнулся с подобной проблемой в практически пустой базе УТ. Надо было удалить 4000 объектов. Оценка скорости удаления этих объектов штатной обработкой дало время удаления 10 часов. 
 За два часа я дописал штатную обработку и за 10 минут я получил ответ, что все мои элементы имеют ссылки. Я пометил на удаление объекты по эти ссылкам. Убъектов на удаление стало 7000. Штатная обработка обещала удалить их за 18 часов. Модифицированная удалили все объекты без ссылок за 30 мин. | |||
| 36
    
        vis_tmp 07.02.15✎ 13:31 | 
        Посмотрите "Удаление помеченных объектов (последовательное, перебирая все помеченные)" на ИС     | |||
| 37
    
        ProxyInspector 07.02.15✎ 18:52 | 
        (36) Я про это и пишу. Типовая обработка по удалению помеченных объектов в УТ11 так и делает. Скорость удаления 1 объект в секунду     | |||
| 38
    
        floody 07.02.15✎ 19:08 | 
        Если процессор загружен на 25% (т.е. полностью одно ядро), значит узкое место в нем - берем haswell, гоним до 5ГГц, думаю почти вдвое ускорится. Хотя этот вариант не для кодеров, правильнее кодом имхо, как в (34)(35).     | |||
| 39
    
        hhhh 07.02.15✎ 19:19 | 
        (33) удаляйте не все сразу, а порциями по 3-4 тыс штук.     | |||
| 40
    
        bolobol 07.02.15✎ 22:25 | 
        Всё не читал, извините - удалите сначала все документы, тогда процесс проверки пойдёт ГОРАЗДО быстрее. Тупая 1С-ина в порядке очереди ищет ссылки с самого верха списка, а там справочники одни.
 А удалять документы обработкой, типа: УстановитьМонопольныйРежим НайтиПомеченныеНаУдаление цикл - найти документы, очередную порцию, штук по 100 УдалитьОбъекты Час-два займёт - остальное из документов нужно смотреть - что именно помешало удалить. У меня регистры сведений мешают, я ЗУП чищу. Второй этап - удалять всё подряд, тоже штук по 100. Т.к. могут быть ссылки на удаляемое, у объектов, что не попали в пакет удаления - всё не удалится. Можно найденные ссылки добавлять в пакет удаления, если объект помечен, и когда добавить нечего - переходить к следующему пакету - объектам не удалиться с сохранением целостности базы. Рекурсию проверять не забыть, а то один и тот же объект добавлять бесконечно на удаление будете, вряд ли 1С-ка сама контролит (свёртывает список на удаление) | |||
| 41
    
        alex_zapl 07.02.15✎ 22:58 | 
        посмотри это http://infostart.ru/public/319611/     | |||
| 42
    
        bolobol 07.02.15✎ 23:17 | 
        (41) Это вообще зло! Есть штатная системная функция НайтиСсылки(), а автор там запросами что-то ищет, да ещё и не всё и без справочников удаляет.     | |||
| 43
    
        Обработка 08.02.15✎ 09:33 | 
        Как обычно ускоряют свертку.
 1. Делаем ввод остатков но при этом не помечем все объекты на удаление. А всего лишь делаем их не проведенными. 2. Все люди могут работать с базой. 3. Помечаем на удаление порции данных прощлого свернутого периода. И порциями удалаем. 4. 3-й пункт поторяем до тех пор пока не избавимся от всех не нужных объектов. Главное чтобы для свертки и для отмены проведения хватило время. В вашем случае в 30 часов уложится. | |||
| 44
    
        Обработка 08.02.15✎ 09:34 | 
        +(43) Я такое проделывал еще с 1с 77.     | |||
| 45
    
        xenos 08.02.15✎ 09:56 | 
        (43) не плохой вариант.     | |||
| 46
    
        ProxyInspector 08.02.15✎ 10:18 | 
        (43) Для 8-ки этот путь не подойдет. Он существенно хуже. Самый быстрый из легких путей в (40)
 УстановитьМонопольныйРежим НайтиПомеченныеНаУдаление цикл - найти документы, очередную порцию, штук по 100 УдалитьОбъекты Только я бы удалял порциями по 10 тыс. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |