Ускоряем удаление объектов штатной обработки комментарием 1 строчки кода

24.04.19

База данных - HighLoad оптимизация

У меня достаточно часто бывают случаи, когда нужно удалить более 1000 объектов, при этом в программе работают пользователи. Я пользуюсь типовой обработкой "Удаление помеченных объектов". Немного поразбирвашись в коде, нашел очень простое решение, как ускорить удаление объектов.

В типовой обработке Удаление помеченных объектов используются 2 механизма работы

1. в монопольном режиме выполняется процедура УдалитьОбъекты

2. в конкурентном режиме объекты удаляются в транзакции с проверкой ссылочной связи

Режим 2 подходит для повседневных задач, однако время удаления возрастает за счет того, что передается информация на клиент об удаляемых объектах

В модуле менеджера обработки я нашел такой код

// Регистрация сообщения для чтения из клиентского сеанса.
ДлительныеОперации.СообщитьПрогресс(Процент, Текст);

Который как раз отвечает за передачу информации в пользовательский сеанс

Код находится в процедуре ОтметитьПрогрессОбходаКоллекции(ПараметрыВыполнения, ИмяКоллекции), в начале которой есть строчки

Если Не ПараметрыВыполнения.Интерактивное Тогда
	Возврат;
КонецЕсли;

То есть для того, чтобы передача на клиент не осуществлялась, нужно установить ПараметрыВыполнения.Интерактивное = Ложь

Данный параметр устанавливается в процедуре ИнициализироватьПараметры(ПараметрыВыполнения)

ПараметрыВыполнения.Вставить("Интерактивное",          ПараметрыВыполнения.Свойство("ПериодЗаписи"));

Получается, что значение параметра определяется наличием ключа ПериодЗаписи в передаваемых параметрах в экспортную процедуру модуля УдалитьПомеченныеОбъектыИнтерактивно(ПараметрыВыполнения, АдресХранилища)

Поиск места, где этот параметр устанавливается, привели меня в модуль формы ОсновнаяФорма в функцию ЗапуститьФоновоеЗадание(Знач ПараметрыМетода) к строчке

ПараметрыМетода.Вставить("ПериодЗаписи", 3); // Секунд

Которую я просто закомментировал

// ПараметрыМетода.Вставить("ПериодЗаписи", 3); // Секунд

Теперь обработка стала удалять объекты быстрее

 

P.S. Если хотите, чтобы во время выполнения крутился бублик, как на скриншоте ниже

Нужно исправить строчку

ПоказыватьБублик = ПараметрыМетода.УдалятьПомеченные И Монопольно;

На

ПоказыватьБублик = ПараметрыМетода.УдалятьПомеченные;

В той же функции ЗапуститьФоновоеЗадание(Знач ПараметрыМетода)

См. также

HighLoad оптимизация Программист Платформа 1С v8.3 Бесплатно (free)

Метод очень медленно работает, когда параметр приемник содержит намного меньше свойств, чем источник.

06.06.2024    9260    Evg-Lylyk    61    

44

HighLoad оптимизация Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Анализ простого плана запроса. Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы.

13.03.2024    5097    spyke    28    

49

HighLoad оптимизация Программист Платформа 1С v8.3 Бесплатно (free)

Оказывается, в типовых конфигурациях 1С есть, что улучшить!

13.03.2024    7573    vasilev2015    20    

42

HighLoad оптимизация Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для простого и удобного анализа настроек, нагрузки и проблем с SQL сервером с упором на использование оного для 1С. Анализ текущих запросов на sql, ожиданий, конвертация запроса в 1С и рекомендации, где может тормозить.

2 стартмани

15.02.2024    12422    241    ZAOSTG    80    

115

HighLoad оптимизация Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Принимать, хранить и анализировать показания счетчиков (метрики) в базе 1С? Почему бы нет? Но это решение быстро привело к проблемам с производительностью при попытках построить какую-то более-менее сложную аналитику. Переход на PostgresSQL только временно решил проблему, т.к. количество записей уже исчислялось десятками миллионов и что-то сложное вычислить на таких объемах за разумное время становилось все сложнее. Кое-что уже практически невозможно. А что будет с производительностью через пару лет - представить страшно. Надо что-то предпринимать! В этой статье поделюсь своим первым опытом применения СУБД Clickhouse от Яндекс. Как работает, что может, как на нее планирую (если планирую) переходить, сравнение скорости работы, оценка производительности через пару лет, пример работы из 1С. Все это приправлено текстами запросов, кодом, алгоритмами выполненных действий и преподнесено вам для ознакомления в этой статье.

1 стартмани

24.01.2024    5669    glassman    18    

40

HighLoad оптимизация Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Встал вопрос: как быстро удалить строки из ТЗ? Рассмотрел пять вариантов реализации этой задачи. Сравнил их друг с другом на разных объёмах данных с разным процентом удаляемых строк. Также сравнил с выгрузкой с отбором по структуре.

09.01.2024    14018    doom2good    49    

71
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. BigClock 24.04.19 15:15 Сейчас в теме
Для быстрого удаления помеченных уже есть обработка с альтернативным алгоритмом контроля
https://infostart.ru/public/557217/
С ее помощью можно ускорить удаление в несколько раз, единственное ограничение - работа только
в режиме толстого клиента.

Хотелось бы узнать, какое ускорение Вы получили с использованием предлагаемых доработок
стандартной обработки?
2. w.r. 650 24.04.19 20:20 Сейчас в теме
(1)

Обработка по вашей ссылке не подходит для большинства современных конфигураций, так как они на управляемых формах и работают в режиме тонкого клиента
3. BigClock 24.04.19 22:03 Сейчас в теме
(2) Рекомендуемая мной обработка как раз таки подходит для задачи однократного удаления большого количества помеченных на удаление объектов. Обработка работает на управляемых формах, но в режиме толстого клиента. По сравнению со стандартной обработкой ускорение в разы. Несколько тысяч объектов ей можно удалить в течение буквально одного-двух часов (в зависимости от количества), тогда как стандартная обработка над тем же количеством может работать целые сутки. Для регулярного удаления нескольких сотен объектов вполне подойдёт и стандартная обработка.
В связи с этим и хотелось узнать, проводили ли Вы какие-то замеры производительности Ваших доработок? На какое ускорение можно рассчитывать?
4. w.r. 650 25.04.19 04:04 Сейчас в теме
(3)

Хорошо. Напишите какие конфигурации 1С сейчас работают в режиме толстого клиента на управляемых формах
5. mvk4d 25.04.19 08:18 Сейчас в теме
(4) , это же обработка не для всех пользователей. А кто, например, работает с инструментами разработчика (админы, программисты), практически всегда запускаются в толстом клиенте! Это например актуально для инструментов разработчика в виде расширения. Там толстый клиент и управляемые формы.
То есть в чем проблема запустить любую современную конфигурацию в толстом клиенте, если эта обработка действительно сэкономит столько времени?

PS. Это вы еще СКД в пользовательском режиме не настраивали для некоторых механизмов современных конфигураций (например, механизм планирования в ERP и др.). Там обязательно в толстом клиенте надо запускаться, по другому никак.
6. w.r. 650 25.04.19 09:40 Сейчас в теме
(5)

В публикации описывается типовая обработка, входящая в состав БСП, соответственно во многие конфигурации формы 1С. Пользуются ей обычные пользователи

Для экономии времени можно использовать удаление в монопольном режиме
7. mvk4d 25.04.19 10:06 Сейчас в теме
(6) , так вопрос ведь не в этом был. Вас 2 раза спросили:

1. Хотелось бы узнать, какое ускорение Вы получили с использованием предлагаемых доработок
стандартной обработки?

2. В связи с этим и хотелось узнать, проводили ли Вы какие-то замеры производительности Ваших доработок? На какое ускорение можно рассчитывать?

Вы оба вопроса проигнорировали и предпочли начать дискуссию о том, что толстый клиент - это ограничение.

"Для экономии времени можно использовать удаление в монопольном режиме" - тогда непонятно зачем ваша обработка, если она не экономит время. Если экономит, по сравнению с типовой, то смотрите вопросы выше, тоже хотелось бы знать ответы на них. Если не измеряли ускорение, то так и напишите.
IgorS; jaroslav.h; +2 Ответить
9. w.r. 650 25.04.19 10:52 Сейчас в теме
(7)

Мне кажется уже пошла демагогия. Замеры можете провести сами, если хотите. Я вам приводить их не обязан. Если считаете, что передача информации из сеанса фонового задания в пользовательский сеанс не занимает время - тогда флаг вам в руки и барабан на шею

По монопольный режим уже писал - нужно выгонять пользователей. А удалить объекты, по крайней мере у меня, бывает нужно здесь и сейчас

p.s. я денег за информацию не беру, в отличие от альтернативных методов. Не хотите - не пользуйтесь, но и не тролльте
15. jaroslav.h 180 01.05.19 23:02 Сейчас в теме
(9) Вася, ты научись читать между своей не понятной злостью и аргументированными вопросами. Кто тебя, как ты пишешь "тролит"?! Тебе вопрос задали, который, и меня интересует, а ты сразу "воюешь".

Мне вот тоже интересно, на твоей системе узнать, как было до и после, что бы понимать, тратить мне время, на твои советы.

Напиши вроде "На 100000000000 объектов, до было Так, стало Так", че сложного?!
16. w.r. 650 02.05.19 06:25 Сейчас в теме
(15)

Меня тоже много что интересует. Но чтобы получить ответы на свои вопросы, я не наезжаю, а вежливо спрашиваю. И тебе советую делать так же
17. jaroslav.h 180 02.05.19 17:57 Сейчас в теме
(16) как ты так и к тебе


не борзей Васька, ты же понимаешь, что понос тут разводить толку мало, рукою с моника не достанишь по мягкому месту
8. melis 97 25.04.19 10:25 Сейчас в теме
(4) Любую типовую конфигурацию от 1С можно запустить в этом режиме, вот доработки могут его порой не поддерживать... но и это решаемо
user633533_encantado; +1 Ответить
11. Xershi 1555 01.05.19 19:16 Сейчас в теме
(4) все конфигурации на УФ работают в толстом клиенте, похоже вы не в теме=))
baranchikov; +1 Ответить
12. w.r. 650 01.05.19 19:36 Сейчас в теме
(11)

Точно знаю, что были ошибки в некоторых конфигурациях при работе в толстом клиенте. По моему связанные с параметрами сеанса, но точно не помню
13. Xershi 1555 01.05.19 19:45 Сейчас в теме
(12) наверно перепутали с ОФ.
14. w.r. 650 01.05.19 19:47 Сейчас в теме
(13)

Точно не перепутал. Запускал УФ + толстый клиент
10. rovenko.n 01.05.19 10:39 Сейчас в теме
"ПоказыватьБублик" - отличное название :-)
baranchikov; milov.aleksey; Daniayr; +3 Ответить
18. Andrey73 27.10.20 11:43 Сейчас в теме
Проверил с секундомером, минута и 25 секунд что с отображением прогресса, что без "передачи информация на клиент об удаляемых объектах". Нет никакой разницы, кроме того, что не видно сколько удалилось а сколько еще осталось.

Комп по ТРС тесту Гилева 77 попугаев, так что полторы минуты достаточно.

В мусорку.
user715379; Euroset1; tof; al.gerasimov; x.vts; +5 Ответить
19. x.vts 17.01.21 14:44 Сейчас в теме
(18) Можете в личку написать
20. user1074471 3 30.11.23 19:30 Сейчас в теме
Надо проверить еще раз:)
Оставьте свое сообщение