Возможно ли ускорить удаление записей регистра? #744302


#0 by bodri
Возможно ли ускорить удаление записей регистра?
#1 by ДенисЧ
Не надо Операция.Прочитать
#2 by pessok
итоги в заросе не нужны, сумма в запросе не нужна, набор не нужно читать и очищать перед записью
#3 by Волшебник
убери  Операция.Прочитать;
#4 by bodri
итоги нужны, выводится еще табличка.
#5 by 1Сергей
перенеси до цикла строку ускорит на 0,000000000001%
#6 by Волшебник
Можно создать новый регистр бухгалтерии и перенести в него записи >&Дата Старый регистр переименовать в Удалить_
#7 by Ненавижу 1С
#8 by pessok
в цикле я этого не вижу
#9 by Волшебник
Запускать надо на 1С-сервере или так, чтобы между клиентом и сервером была гигабитная сетка.
#10 by bodri
не так не пойдет, в базе 8 лет работы, а удалить надо первый год.
#11 by pessok
это была шутка, мне кажется :)
#12 by bodri
не буду же я всю процедурину суда впихивать
#13 by Волшебник
Зависит от объёма данных и как его разделяет дата. Например, если надо удалить 8 лет работы и оставить последний год, то вполне имеет смысл создать новый регистр или новую базу
#14 by bodri
согласен
#15 by Волшебник
Кстати, остатки изменятся. Это предусмотрели?
#16 by pessok
я бы все же снял активность с движений, дабы "не протерять", с другой стороны, в отдельном регистре они тоже не пропадут
#17 by bodri
да
#18 by bodri
странно работает медленней чем в 112 записей в минуту, а в 95 записей в минуту
#19 by bodri
наоборот в 95 записей в минуту, а - 112
#21 by pessok
высказывание_Станиславского.txt
#22 by bolobol
Да, оптимизация - она такая...
#23 by pessok
давай замеры, надо смотреть где оно тупит
#24 by Гёдза
если массово, то отключить итоги, удалить в режиме обмен данными, потом пересчитать итоги
#25 by Гёдза
или удалять даже в чистом скл
#26 by Гёдза
у меня где-то была такая обработка свертки. но только для регистров накопления
#27 by pessok
кстати да, отключение итогов точно позволит ускорить обработку. ОбмегДанными.Загрузка - тут уже надо смотреть что там в самом модуле набора данных, может быть и не нужно
#28 by bodri
по на 106 обращений 46,6 сек по на 101 обращений 50,5 сек
#29 by bolobol
Отсутствие проверки на необходимость записи:       КонецЕсли; - вызывает запись даже тогда, когда она не требуется. Вопрос лишь в том - зачем отбирать регистраторы, по которым очищать нечего
#30 by pessok
все дело в том, что в это условие входа тупо не будет, посему оно лишнее. Запрос же строится по регистру, значит по регистратору движения есть
#31 by bodri
верно
#32 by bolobol
глянь в - 101 раз, вместо 106
#34 by bodri
к и + замер делался за минуту
#35 by pessok
дык это не показатель, записи все равно обрабатываются одни и те же, просто, почему-то, после чтения и очистки удаляется веселее... Платформа...
#36 by bolobol
Если разный набор удаляется - тогда и сравнивать нечего.
#37 by vogenut
#38 by pessok
+ как вариант может взлететь, а если еще и в начале транзакции отрубить итоги, то вообще может получиться хорошо. Грустнее, что это все гадание на кофейной гуще
#39 by z80a
При чистке записей регистра нужно отключить пересчет итогов:
#40 by vogenut
Если очищается большая часть регистра, то можно отключить итоги. Транзакция всегда даст выигрыш.
#41 by Волшебник
Надо посмотреть модуль набора регистра, какие там проверки при записи и отключить их по условию ПараметрСеанса.ГрупповоеИзменениеОбъектов или ОбменДанными.Загрузка = Истина
#42 by pessok
все были уверены, что непрочитывание набора тоже даст выигрышь, ан нет
#43 by ЧеловекДуши
Ты тест проводишь при удалении одних и тех же данных. Или попросту 100 первых попавшихся? 100 тогда, не будут 100 в следующем ;)
#44 by pessok
я ничего не провожу, я только высказываю мнение, что может помочь автору, а потом буду использовать это у себя :)
#45 by bodri
специально развернул 2 базы для проверки, поэтому по идее условия одинаковы
#46 by Fragster
выключить итоги, выбрать регистраторов по месяцам, каждый месяц запустить в своем фоновом задании или в своем сеансе 1с
#47 by vogenut
Набор все равно зачитывается, самой платформой.
#48 by Fragster
+ ну, или по количеству ядер процессора
#49 by Fragster
ну и база должна быть клиент-серверной, и на сервере должны быть диски нормальные, а не один wd green 5400 оборотов
#50 by bolobol
Думается, закупить нормальные диски для разовой операции - это не совсем адекватно)
#51 by Fragster
ну вдруг там они уже стоят на сервере?
#52 by Мыш
Итоги отключить, несомненно.
#53 by Fragster
+ вот в публикации как раз измеряется скорость записи наборов. какие красивые графики при увеличении количества параллельных сеансов.
#55 by Fragster
#56 by Волшебник
да-да, всё нужно делать параллельно
#57 by pessok
абсцисса - количество потоков?
#58 by bodri
Опытным путем добился следующих результатов за минуту действий + отключение итогов 531 обращение за 20,92 сек. + отключение итогов 715 обращений за 28,52 сек.
#59 by Fragster
да
#60 by Fragster
интересно, там веб сервис обмена результатами еще работает?
#61 by hhhh
ну ОбменДанными.Загрузка = Истина ставил?
#62 by Redkiy
а сам запрос не обсуждается? Для чего там группировки и лишние реквизиты (Сумма)?
#63 by pessok
говорят, что надо :)
#64 by bodri
->
#65 by vogenut
Транзакцию пробовал?
#66 by pessok
ну как, распараллелил?
#67 by bodri
да, почти без результатов, по началу вроде шустро, но потом, после 10к записей сильное замедление, даже если разделять по количеству транзакция. Всем спасибо за советы и обсуждение. Самый оптимальный для меня по времени, мой вариант с отключением итогов
#68 by pessok
в потоках будет быстрее, но больше кода
#69 by bodri
поподробней?
#70 by Fragster
надо запустить несколько сеансов по разным периодам и все. если итоги не отключены - то еще разрешить разделение итогов, но лучше все-таки итоги отключить.
#71 by pessok
разбить поквартально, запустить для каждого квартала свое фоновое задание по очистке можно и так, но красивее все же фоновыми
#72 by Zhuravlik
Почему-то никто не сказал про truncate в СУБД.
#73 by Zhuravlik
+ Или база файловая?
#74 by pessok
посмотри на секцию ГДЕ в запросе
#75 by ЧеловекДуши
Несколько фоновых заданий.
#76 by ДенисЧ
Потому что большинство тех, кто знает о транкейте, догадывается, что им нельзя удалить только часть данных
#77 by pessok
но вообще, DELETE FROM Таблица WHERE Условие
#78 by Волшебник
да ты гений
#79 by Zhuravlik
я из меньшинства) Почему-то думал у него есть параметры. На разл. обменах чистить тестовые РС - это ад просто, то-ли дело напрямую - пара секунд там, где 1С думает около часа...
#80 by pessok
от только 1С строго-настрого запрещает вручную ковыряться в таблицах
#81 by Fragster
правильно. а то такие, как фиганут данные, а потом за них ошметки вычищать
#82 by bodri
с отключением итогов тоже, что-то долго получается без отключения 1,5 часа 1 квартал, с отключением 15 минут чистит и уже 30 минут включает итоги.
#83 by Fragster
ну значит, для параллельного удаления не отключай итоги, а включай разделение итогов
#84 by Волшебник
В чём проблема оставить на ночь? За 4 часа он всё удалит. Потом за 30 минут включишь итоги
#85 by bodri
в принципе проблемы нет с включением на ночь, так и планировал сделать с рабочей базой.
#86 by Зеленый пень
Когда наконец 1С разрешит массовые операции над таблицами?
#87 by Волшебник
Сделай ещё 8 сеансов на каждый год. Действуй.
#88 by Zhuravlik
не надо про "такие как" - я бы не стал использовать не до конца понятный мне механизм в боевой базе. Сказал же - тестовые РС чистил. И можно узнать, о каких ошметках идет речь, если я чищу РС? Индексы?
#89 by Fragster
регистрация изменений. бесконечное количество того, что выполняется в обработки ПередЗаписью и ПриЗаписи. для периодических РС и 8.3.5 - таблицы итогов.
#90 by Zhuravlik
спасибо, действительно про планы обмена
#91 by Zhuravlik
не подумал)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С