Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Izmenennye_Lektsii_po_RISu.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
601 Кб
Скачать
☆

Транзакции

Транзакция – последовательность SQL операторов, которые рассматривают как независимые действия на БД. Это основа поддерживания целостности БД. Транзакция может быть либо фиксирующаяся, либо откатывающаяся.

Откат транзакции – действие, обеспечивающее аннулирование всех изменений данных, которые были сделаны операторами SQL в теле текущей транзакции.

Фиксация транзакций – действие, обеспечивающее подтверждение всех изменений данных, которые были сделаны операторами SQL в теле текущей транзакции.

Свойство транзакции:

  • Атомарность (транзакция должна быть выполнена в целом или не выполнена вовсе)

  • Согласованность (по мере выполнения транзакции, данные переходят из одного согласованного состояния в другое)

  • Изолированность (конкурирующие за доступ к БД транзакции физически обрабатываются последовательно, изолированно друг от друга)

  • Долговечность (при успешно завершенной транзакции те изменения, которые были ею произведены не могут быть потеряны)

Пример транзакции:

Рассмотрим транзакцию. Изменить количество в заказе №113051 с 4 до 10, при чем стоимость заказа изменится с 140580 до 356000

Заказ на товар серии “НП456”, контролируется менеджером под №108,работающим в городе Твери (отдел №1)

Whenever error

Имя функции с командой Rollback work

Begin work

Update заказ

Set кол-во 10, стоимость _35500

Where № заказа _11305

Update менеджер

Set объем_продаж=объем продаж-140580+356000

Where № менеджера =108

Update отделение

Set объем_продаж=объем_продаж-140580+356000

Where №управления=21

Update товар

Set количество_на _складе=количество_на_складе-(10-4)

Where серия = НП456

Commit work

Модель транзакции стандарта ANSI/ISO включает операторы:

Commit – завершение транзакции, после чего стартует новая транзакция

Rollback – прервать транзакцию, отменить, изменить сделанные в рамках данной транзакции преобразования

В стандарте нет оператора begin. Транзакция начинается с оператора SQL, инициируемого пользователем или содержащегося в программе до завершения транзакции(commit). Другим пользователям видны данные на момент начала транзакции.

Модель транзакции Sybase

Включает операторы:

Begin transaction – начало транзакции

Commit transaction – завершение транзакции

Save transaction – сохраняет состояние БД и дает наименование моменту сохранения

Rollback to – имя момента сохранения, прервать транзакцию и произвести откат к состоянию БД, достигнутому к моменту начала транзакции.

Журнал транзакции

Это последовательность записей об изменении БД. Журнал предназначен для восстановления согласованного состояния БД в случае:

  1. индивидуального отката транзакций (оператор Rollback) аварийное завершение работы приложения, взаимные блоки таблиц при параллельном выполнении транзакции.

  2. мягкого сбоя – потери содержимого оперативной памяти (аварийное отключение питания, сбой процессора).

  3. жестокого сбоя – потери информации, жестких дисков.

Общая структура журнала

Механизм журнализации и восстановления:

  1. когда транзакция №1 начинается, то в журнал записывается №1 begin transaction

  2. Для каждой изменяемой записи в рамках транзакции записывается “№1 уникальный_номер_записи, строка до…, строка после...” Затем изменяется запись в БД.

  3. когда транзакция №1 заканчивается, то в журнал заносится – “№1 commit” аналогично для следующей транзакции.

  4. Если после оператора SQL некоторой транзакции следовал Rollback или произошел сбой, то СУБД просматривает журнал, находит транзакцию без commit и восстанавливает данные на момент начала соответствующей транзакции.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]