Контрольные точки

Для более гибкого управления длинными транзакциями в СУБД ЛИНТЕР реализован механизм контрольных точек. Управление контрольными точками транзакций возложено на клиентское приложение. Оно может:

  • создавать необходимое число контрольных точек;

  • выполнять откат (ROLLBACK) транзакции к любой установленной контрольной точке;

  • выполнять фиксацию изменений (COMMIT) транзакции до любой установленной контрольной точки.

Механизм контрольных точек позволяет клиентскому приложению возвращаться в транзакциях на «шаг назад» и осуществлять затем дальнейшие действия. Типичным примером использования контрольных точек являются задачи резервирования билетов, когда туристический маршрут не является прямым, а проходит через несколько пунктов. Резервирование билетов в каждый пункт маршрута осуществляется после установления контрольной точки для предыдущего отрезка пути. В случае если клиент не может воспользоваться предложенным вариантом передвижения по тем либо иным соображениям, клиентское приложение может вернуться в предыдущую контрольную точку и продолжить резервирование билетов по другому маршруту. В этом случае последовательность SQL-запросов будет выглядеть примерно следующим образом:

T1 SET SAVEPOINT A1
T1 SELECT …
T1 UPDATE …
T1 SET SAVEPOINT A2
T1 SELECT …
T1 UPDATE …
T1 ROLLBACK TO SAVEPOINT A2
T1 …
T1 COMMIT