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