Показать сообщение отдельно
Старый 20.03.2008, 22:57   #11  
Ned is offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Регистрация: 29.12.2002
Адрес: самолёт
Цитата:
Для меня самый простой выход - оптимизировать сам механизм пересчета, например пересчитывать только проводки в открытых периодах, или вручную задавать интервал дат при пересчете, т.е каким либо образом уменьшить порцию вычислений в одной транзакции.
Уменьшить объём данных для пересчёта с помощью, например, задания диапазона дат - самый простой вариант. Просто делаете свой наследник класса LedgerRecalcPeriod и в нём правите одну строчку в методе run(). Так же отличная идея с открытыми периодами.

Мне ещё кажется неоптимальным механизм пересчёта, т.е. само вычисление значений внутри транзакции. Я бы предложил его переписать целиком - сначала подсчитывать суммарные значения, потом их класть в RecordInsertList и только потом уже открывать транзакцию, внутри которой чистить таблицы сумм и вставлять в них значения из RecordInsertList'ов.
__________________
Viacheslav Nefedov, http://www.nefedov.net, http://restock.guru/