Имя: Пароль:
1C
1С v8
Узкое место при контроле удаления объектов
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 тыс.