Контрольные точки
Для более гибкого управления длинными транзакциями в СУБД ЛИНТЕР реализован механизм контрольных точек. Управление контрольными точками транзакций возложено на клиентское приложение. Оно может:
-
создавать необходимое число контрольных точек;
-
выполнять откат (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