Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД вопросы.doc
Скачиваний:
41
Добавлен:
26.03.2015
Размер:
424.96 Кб
Скачать
                  1. 26. Транзакции: определение, назначение, свойства acid, уровни изоляции, операторы tcl и их применение.

BEGIN TRANSACTION - начать транзакцию

COMMIT TRAN - зафиксировать транзакцию

ROLLBACK TRAN - откатить транзакцию

SAVEPOINT - точка остановки

Транзакция - это группа логически связанных операторов SQL, результаты которых могут быть зафиксированы или отменены как единое целое.

Используется для многопользовательских баз данных. То есть при сетевых запросах к ней.

Вот к примеру, в инете есть БД авиакомпании. Клиент делает запрос на наличие свободного 14го места на такой то такойто рейс. Место свободно, и он его бронирует. Вот вся эта группа команд и будет транзакцией. Ее результат можно сохранить. То есть вызвать оператор commit и место будет забронировано в базе данных. А можно ROLLBACKом откатить изменения и место останется свободным, если клиент передумал покупать это место.

4 свойства ACID:

1)Атомарность.Это когда все входящие в транзакцию операторы SQL рассматриваются как единая неделимая группа. То есть либо она выполняется ВСЯ, либо никакой из операторов не выполнится.

2)Непротиворечивость(Согласованность) Это означает, что состояние БД остается согласованным и непротиворечивым после завершения транзакции.

3)Изолированность.Вот это самое интересное

Это свойство при котором множество транзакций, которые выполняются одновременно не должны взаимодействовать. Рассмотрим когда 2 клиента у БД авиакомпании запрашивают место 14 на одном и том же рейсе. При этом тот кто забронирует это место первым должен быть единственным лицом забронировавшим его, а не так что Клиент1 забронировал, Клиент2 тоже забронировал, и в результате они летят друг у друга на коленках

4)Долговременность.После фиксации транзакции изменения в БД сохраняются при отключении компьютера или при выходе его из строя.

Уровни изоляции:

SET TRANSACTION ISOLATION LEVEL [READ COMMITED|READ UNCOMMITED| REPEATABLE READ|SERIALIZABLE]

Незавершенное (грязное) чтение (read uncommitted) — минимальный уровень изоляции гарантирует только физическую целостность при записи данных. Процессы-читатели могут считывать данные незавершенной транзакции процесса-писателя.

Подтвержденное чтение (read committed) — процессы-читатели не могут считывать данные незавершенной транзакции, но процессы-писатели могут изменять уже прочитанные читателем данные.

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

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

Моментальный срез (snapshot) — данный вид изоляции не входит в рекомендации стандарта SQL 92, но он реализован во многих СУБД. Процессы-читатели не ждут завершения транзакций писателей, а считывают данные, точнее их версию, по состоянию на момент начала своей транзакции.

Сериализуемость (serializable), или полная изоляция

Уровень сериализуемости SERIALIZABLE гарантирует, что все затронутые в транзакции данные не будут изменены другими транзакциями. На этом уровне появление фантомов исключается.

Transaction Control Language (работа с транзакциями) BEGIN TRANSACTION, COMMIT, ROLLBACK;

BEGIN TRANSACTION;

INSERT INTO books (title, author, year, description)

VALUES ('Новая книга', 'Василий Ежиков', 2005, 'Книга о новом');

COMMIT work;