Пользовательские точки сохранения

Пользовательские точки сохранения

Операторы пользовательских точек сохранения (user savepoints), также называемые вложенными транзакциями, позволяют вам "упаковать" группы операций внутри транзакции и отмечать их, если пересылка в базу данных была успешной. Если позже в последовательности задач появится исключение, транзакция может выполнить откат к последней точке сохранения. Операции, отправленные в базу между этой точкой сохранения и возникшим исключением, будут отменены, а приложение может выполнить корректировку, подтверждение, полный откат, продолжить работу - в зависимости от того, что требуется сделать.

Создание пользовательских точек сохранения

Пользовательские точки сохранения являются операцией клиентской стороны, доступной только в операторах DSQL.

Оператором создания пользовательской точки сохранения является:

SAVEPOINT <идентификатор>;

Идентификатор может быть любым правильным идентификатором SQL Firebird (максимум 31 алфавитно-цифровой символ ASCII, уникальный в транзакции). Вы можете заново использовать тот же идентификатор в той же транзакции, он перекроет существующую точку сохранения, связанную с этим именем.

Возврат на точку сохранения

Возврат (или откат, rollback) на точку сохранения начинается с отмены всей работы, выполненной и отправленной в базу данных после создания этой точки сохранения. Указанная точка сохранения и все предшествующие ей сохраняются. Любые точки сохранения, которые были созданы после указанной точки сохранения, пропадают.

Любые блокировки (явные и неявные), которые были установлены с момента создания указанной точки сохранения, будут сняты. При этом транзакции, которые были заблокированы при ожидании доступа к освобожденным строкам, все еще не получат к ним доступ, пока не завершится текущая транзакция. Это гарантирует, что ожидающие в настоящий момент конкуренты не повлияют на поток работы, когда он будет возобновлен. Все это не повлияет на транзакции, которые не находились в состоянии ожидания в момент вложенного отката.

Вот шаблон синтаксиса для отката на точку сохранения:

ROLLBACK [WORK] ТО [SAVEPOINT] <идентификатор>;

Если транзакция позволяет продолжить работу после отката на точку сохранения, то в дальнейшем работа может осуществлять откат на эту точку сохранения столько раз, сколько потребуется. Версии записей, которые были отменены откатом, не будут доступны для сборщика мусора, потому что транзакция все еще является активной.

Освобождение точек сохранения

Механизм реализации точек сохранения на сервере - протокол в памяти - может требовать значительного количества ресурсов, особенно если одни и те же строки изменяются многократно в процессе выполнения задачи. Ресурсы уже ненужных точек сохранения могут быть освобождены при использовании оператора RELEASE

SAVEPOINT:

RELEASE SAVEPOINT <идентификатор> [ONLY];

Без ключевого слова ONLY указанная точка сохранения и все точки сохранения, которые были созданы после нее, будут освобождены и потеряны. Используйте ONLY для освобождения только указанной точки сохранения.

Следующий пример иллюстрирует работу точек сохранения:

CREATE TABLE SAVEPOINT_TEST (ID INTEGER);

COMMIT;

INSERT INTO SAVEPOINT_TEST

VALUES(99);

COMMIT;

INSERT INTO SAVEPOINT_TEST

VALUES(100) ;

/**/

SAVEPOINT SP1;

/**/

DELETE FROM SAVEPOINT_TEST;

SELECT * FROM SAVEPOINT_TEST; /* не вернет ничего */

/**/

ROLLBACK TO SP1;

/**/

SELECT * FROM SAVEPOINT_TEST; /* вернет 2 строки */

ROLLBACK;

/**/

SELECT * FROM SAVEPOINT_TEST;

/* вернет одну подтвержденную строку */

Внутренние точки сохранения

Когда ядро сервера выполняет откат, его контрольная точка по умолчанию для отменяемой транзакции ссылается на внутреннюю точку сохранения, находящуюся в протоколе автоотмены в оперативной памяти. При завершении отката он подтверждает транзакцию. Целью этой стратегии является сокращение количества мусора, порождаемого откатами.

Когда объем изменений, выполненных перед точкой сохранения на уровне транзакции, становится большим - в пределах от 10 000 до 1 миллиона строк - ядро сервера прекращает использовать протокол автоотмены и получает ссылки напрямую из глобального образа состояния транзакции (TSB). Если у вас есть транзакция, в которой цы предполагаете выполнение операции с большим количеством изменений, отключение ведения протокола автоотмены предотвратит утечку потребляемых ресурсов, которая появится, если ваш сервер решит отменить ведение протокола. Подробности см. в разд. "Протокол автоотмены" ранее в этой главе.

PSQL

Расширения для обработки исключений

Эквивалентом точек сохранения в модулях PSQL является обработка исключений. Каждый блок PSQL для обработки исключений также ограничен автоматической системой точек сохранения. Расширения PSQL предоставляют языковую оболочку для реализации того же типа вложенности транзакций, что и пользовательские точки сохранения в DSQL. Подробности см. в главе 32.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Сервис сохранения текстов как оружие в информационной войне

Из книги автора

Сервис сохранения текстов как оружие в информационной войне В Интернете существует сервис «Ontext» (www.ontext.info). «Мирное» предназначение этого ресурса – сохранение текстов. Его можно использовать в ситуации, когда вам пришлось напечатать какой-то текст и надо его просто


Диалоговое окно открытия и сохранения файла

Из книги автора

Диалоговое окно открытия и сохранения файла Windows Me/2000 имеет новое диалоговое окно "ОткрытьСохранить файл", которое можно изменить по Вашему желанию. В левой части диалогового окна расположены пять системных папок, которые можно поменять местами или изменить на те,


Диалоговое окно открытия и сохранения файла

Из книги автора

Диалоговое окно открытия и сохранения файла Windows XP имеет новое диалоговое окно "ОткрытьСохранить файл", которое можно изменить по Вашему желанию. В левой части диалогового окна расположены пять системных папок, которые можно поменять местами или изменить на те, которыми


Запрет сохранения паролей в Dial-Up-соединениях

Из книги автора

Запрет сохранения паролей в Dial-Up-соединениях По умолчанию, в Dial-Up-соединениях введенный пароль сохраняется после успешного соединения, если задействована опция "Сохранять имя пользователя и пароль", расположенная на диалоговом окне для Dial-Up. Это достаточно удобно для


Диалоговое окно открытия и сохранения файла для Office

Из книги автора

Диалоговое окно открытия и сохранения файла для Office Office 2000/XP имеет новое диалоговое окно "Открыть/Сохранить файл", аналогичное в Windows Me/2000/XP, которое можно изменить по Вашему желанию. В левой части диалогового окна расположены пять папок. Но многих пользователей не


Настройка параметров открытия и сохранения файлов

Из книги автора

Настройка параметров открытия и сохранения файлов Вкладка открытия и сохранения файлов Open and Save диалогового окна Options показана на рис. 3.5. Рис. 3.5. Диалоговое окно настройки параметров открытия и сохранения файловНа ней осуществляется настройка следующих параметров.• В


14.9. Применение XML для сохранения и восстановления набора объектов

Из книги автора

14.9. Применение XML для сохранения и восстановления набора объектов ПроблемаТребуется иметь возможность сохранения набора объектов C++ в документе XML и считывания их потом обратно в память.РешениеИспользуйте библиотеку Boost Serialization. Эта библиотека позволяет сохранять и


Программы для сохранения и восстановления конфигурации

Из книги автора

Программы для сохранения и восстановления конфигурации В предыдущем разделе мы уже горестно вздыхали по поводу того прискорбного факта, что операционная система – вещь крайне ненадежная и уязвимая. И даже называли ее ахиллесову пяту – системный реестр. Помимо


Настройка параметров открытия и сохранения файлов

Из книги автора

Настройка параметров открытия и сохранения файлов Вкладка открытия и сохранения файлов Open and Save диалогового окна Options показана на рис. 3.5. На ней осуществляется настройка следующих параметров. Рис. 3.5. Диалоговое окно настройки параметров открытия и сохранения


"Точки сохранения" в PSQL

Из книги автора

"Точки сохранения" в PSQL Добавление возможностей создания пользовательских точек сохранения в Firebird 1.5 позволяет приложению управлять область действия отката транзакции. В PSQL всегда была возможность обработки исключений. Подробности см. в главе


Вложенные исключения в качестве точек сохранения

Из книги автора

Вложенные исключения в качестве точек сохранения Вложенная архитектура блоков выполнения модулей PSQL означает, конечно, что PSQL поддерживает "вложенные" транзакции. Деятельность каждого модуля PSQL выполняется в контексте той транзакции, в которой он был вызван.


Настройка параметров открытия и сохранения файлов

Из книги автора

Настройка параметров открытия и сохранения файлов Вкладка открытия и сохранения файлов Open and Save диалогового окна Options показана на рис. 3.5. Рис. 3.5. Диалоговое окно настройки параметров открытия и сохранения файловНа ней осуществляется настройка следующих параметров. • В


Варианты сохранения проекта

Из книги автора

Варианты сохранения проекта По умолчанию проект ArchiCAD сохраняется в формате PLN, но при этом в файл проекта записываются только ссылки на использованные в проекте библиотечные объекты, текстуры и фоновые рисунки. По этой причине при переносе файла проекта на другой


Окно открытия или сохранения файла

Из книги автора

Окно открытия или сохранения файла В этом разделе мы рассмотрим, как с помощью системного реестра можно изменять режимы работы в окне открытия/сохранения файла.Поле кнопок окна открытия/сохранения файловНекоторые стандартные программы Windows Vista используют старое окно,


13.4.5. Автоматическое сохранение. Параметры сохранения

Из книги автора

13.4.5. Автоматическое сохранение. Параметры сохранения У вас частенько отключают электропитание, источник бесперебойного питания еще не купили, но зато постоянно забываете сохранить документ? История знакомая. Вам может помочь сам Word — просто настройте автоматическое


Дмитрий Шабанов: "Инстинкт сохранения вида"?

Из книги автора

Дмитрий Шабанов: "Инстинкт сохранения вида"? Автор: Дмитрий ШабановОпубликовано 07 июня 2012 годаНекий йоговский сайт ничтоже сумняшеся утверждает: "Человек, как и любое другое существо на Земле, появляется для того, чтобы обеспечить процветание и развитие своего вида".