Транзакции

Второй способ ускорить процесс обработки данных - это использование транзакций. пример использования выглядит очень просто:
Процедура ДобавитьЭлементыСправочника(РазмерТранзакции)Экспорт

 КоличествоЭлементов = 80000;
 ДлинаТранзакции = 1;
 НачатьТранзакцию();
 
 Для индекс = 1 По КоличествоЭлементов Цикл
  ИмяЭлемента = "Элемент номер " + Строка(индекс+1);
  ОбъектСправочник = Справочники
  .ТестированиеЗагрузкиДанных.СоздатьЭлемент();
  ОбъектСправочник.Наименование = ИмяЭлемента;
  ОбъектСправочник.Записать();
  Если ДлинаТранзакции = РазмерТранзакции Тогда
   ЗафиксироватьТранзакцию();
   ДлинаТранзакции = 0;
   НачатьТранзакцию();
  КонецЕсли;
  ДлинаТранзакции = ДлинаТранзакции + 1;
  индекс = индекс + 1;
 КонецЦикла;
 
 Если ТранзакцияАктивна() Тогда
  ЗафиксироватьТранзакцию();
 КонецЕсли;

КонецПроцедуры
В настольной книге эксперта 1С рекомендуют использовать размер транзакции равный 100, но на практике можно поэкспериментировать, возможно оптимальный результат будет с другим размеро транзакции.
Для предоставленного примера есть следующие замеры:
- без транзакций - 150 сек.;
- длина транзакции 100 элементов - 117 сек.;
- длина транзакции 1000 элементов - 122 сек.

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

Комментариев нет:

Отправить комментарий