Тест скорости перезаписи в нетленке

Понадобилось проверить, как быстро перезапишется база с несколькими десятками миллионов элементов товаров.

Конфигурация была под обычные формы, но мышление и память работают забавно.

Я хотел визуально наблюдать прогресс записи. И забыл, что в обычных формах сообщение сразу выдается в окно сообщений. Поэтому зачем-то написал асинхронный режим.

В итоге получился такой гибрид ежа и ужа, но работающий:

Перем Выборка, Начало, Сч, РазмерПорции, Ошибок;

Процедура КнопкаВыполнитьНажатие(Кнопка)
	З = Новый Запрос(
	"Выбрать ССЫЛКА ИЗ Справочник.Товары КАК Т ");
	Выборка = З.Выполнить().Выбрать();
	РазмерПорции = 1000;
	Сч = 0; Ошибок = 0;
	
	Начало = ТекущаяДата();
	ОчиститьСообщения();
	Сообщить("Начало: " + Начало);
	ПодключитьОбработчикОжидания("ЗаписатьПорцию", 0.1, истина);
	
КонецПроцедуры

Процедура ЗаписатьПорцию() Экспорт  
	Пока Выборка.Следующий() Цикл
		Сч = Сч + 1;
		ОО = Выборка.Ссылка.ПОлучитьОбъект();
		Попытка
			ОО.Записать();
		Исключение
			Ошибок = Ошибок + 1;
		КонецПопытки;
		Если Сч % РазмерПорции = 0 ИЛИ Выборка.Количество() = Сч Тогда                 
			Секунд = ТекущаяДата() - Начало;
			Скорость = Цел (?(Секунд = 0, 0, Сч / Секунд));
			Сообщить("Запись: " + ТекущаяДата() + " Записано: " + Сч + " Средняя скорость: " + Скорость  + " элементов/секунду Ошибок всего: " + Ошибок);
			ОбработкаПрерыванияПользователя();
			ПодключитьОбработчикОжидания("ЗаписатьПорцию", 0.1, истина);
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры

Результат выглядел так:

Итоги, в принципе, радуют — чтобы перезаписать товары, на каждый миллион товаров понадобится 1.000.000 : 150 : 3600 = 1.85 часов.

Т.е. на 20 миллионов понадобится 37 часов. Это еще приемлемо.

Среда: Нетленка ОФ, MS SQL Сервер Объем: 0.8 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментария 2

  1. Вкасч:

    Причем тут асинхронность и зачем тут таймер. Зачем ты одну и ту же «порцию» гоняешь?

    • Почему вы решили что гоняется одна и та же порция? Выборка выбирает все элементы справочника.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *