Сталкиваясь с задачей обновления многих строк, большинство программистов пытаются найти некоторый процедурный способ — выполнить это в цикле, фиксируя каждую из всего этого множества строк. Я слышал два основных аргумента в пользу такого способа.
Это быстрее и эффективнее — часто фиксировать множество мелких транзакций, чем обрабатывать и фиксировать одну большую транзакцию.
Нет достаточного пространства для отката.
Оба эти заключения ошибочны. Более того, слишком частая фиксация подвергает вашу базу данных опасности остаться в “неопределенном” состоянии, если процесс обновления даст сбой на полпути. Это требует сложной логики — написать процесс, который будет гладко перезапускаться в случае сбоя. Намного лучше выполнять фиксацию так часто, как этого требует ваш бизнес-процесс, и соответствующим образом настроить размер сегментов отката.
Давайте рассмотрим все это более подробно.
< Предыдущая | Следующая > |
---|