СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Язык управления транзакциями (TCL)

Категория: Информатика

Нажмите, чтобы узнать подробности

Данный методический материал содержит презентацию " Операторы языка SQL для манипулирования данными" по дисциплине "Системы управления базами данных". Полезен при изучении  дисциплины МДК.03.02 " Системы управления базами данных" 

Просмотр содержимого документа
«Язык управления транзакциями (TCL)»

Язык управления транзакциями (TCL)

Язык управления транзакциями (TCL)

Обеспечение функционирования баз данных  Восстановление  Восстановление СУБД означает восстановление самой базы данных, т.е. возвращение БД в правильное состояние. Основной принцип, на котором строится такое восстановление – это избыточность, которая организуется на физическом уровне. Транзакции  Транзакцией  называется последовательность операций, производимых над базой данных, переводящая базу данных из одного непротиворечивого состояния в другое непротиворечивое состояние.

Обеспечение функционирования баз данных

Восстановление

Восстановление СУБД означает восстановление самой базы данных, т.е. возвращение БД в правильное состояние. Основной принцип, на котором строится такое восстановление – это избыточность, которая организуется на физическом уровне.

Транзакции

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

 Стандартные команды для работы с транзакциями: BEGIN TRAN – начало транзакции, ROLLBACK TRAN – откат, отмена транзакции; все изменения, сделанные с начала транзакции, будут отменены, COMMIT TRAN – завершение, подтверждение транзакции; все изменения, сделанные с начала транзакции, будут зафиксированы .  До момента подтверждения транзакции все измененные данные записываются в журнал транзакций, и только после фиксации транзакции данные переносятся собственно в таблицы .

Стандартные команды для работы с транзакциями:

BEGIN TRAN – начало транзакции,

ROLLBACK TRAN – откат, отмена транзакции; все изменения, сделанные с начала транзакции, будут отменены,

COMMIT TRAN – завершение, подтверждение транзакции; все изменения, сделанные с начала транзакции, будут зафиксированы .

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

Уровни изолированности транзакций: Serializable  – самый надежный, но и самый медленный уровень изолированности, транзакции выполняются последовательно, друг за другом. Repeatable read – при повторном чтении данных результат будет точно таким же, как и при первом чтении, даже если данные были изменены. Read commited – допускается читать только данные завершенных транзакций. Read uncommited - допускается читать “грязные данные”, т.е., данные незавершенных транзакций.

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

  • Serializable самый надежный, но и самый медленный уровень изолированности, транзакции выполняются последовательно, друг за другом.
  • Repeatable read при повторном чтении данных результат будет точно таким же, как и при первом чтении, даже если данные были изменены.
  • Read commited допускается читать только данные завершенных транзакций.
  • Read uncommited - допускается читать “грязные данные”, т.е., данные незавершенных транзакций.
Рассмотрим пример :  Предположим, что отношение P (отношение деталей) включает атрибут TOTQTY, представляющий собой общий объем поставок для каждой детали. Значение TOTQTY для любой определенной детали предполагается равным сумме всех значений QTY для всех поставок данной детали. Ниже показано добавление в базу данных новой поставки со значением 1000 для поставщика S5 и детали P1. BEGIN TRANSACTION; INSERT ({S#:’S5’, P#:’P1’, QTY:1000}) INTO SP; IF ошибка THEN GO TO UNDO; UPDATE P WHERE P# = ’P1’ TOTQTY:=TOTQTY+1000; IF ошибка THEN GO TO UNDO; COMMIT TRANSACTION; GO TO FINISH; UNDO: ROLLBACK TRANSACTION; FINISH: RETURN;

Рассмотрим пример :

Предположим, что отношение P (отношение деталей) включает атрибут TOTQTY, представляющий собой общий объем поставок для каждой детали. Значение TOTQTY для любой определенной детали предполагается равным сумме всех значений QTY для всех поставок данной детали. Ниже показано добавление в базу данных новой поставки со значением 1000 для поставщика S5 и детали P1.

BEGIN TRANSACTION;

INSERT ({S#:’S5’, P#:’P1’, QTY:1000}) INTO SP;

IF ошибка THEN GO TO UNDO;

UPDATE P WHERE P# = ’P1’ TOTQTY:=TOTQTY+1000;

IF ошибка THEN GO TO UNDO;

COMMIT TRANSACTION;

GO TO FINISH;

UNDO: ROLLBACK TRANSACTION;

FINISH: RETURN;

Восстановление транзакции   Транзакция начинается с успешного выполнения оператора Begin Transaction и заканчивается успешным выполнение либо оператора Commit, либо оператора Rollback. Оператор Commit устанавливает так называемую точку фиксации, которая соответствует концу логической единице работы и , следовательно, точке, в которой база данных находится  в согласованном состоянии. Выполнение же оператора Rollback возвращает базу данных в состоянии, в котором она находилась во время выполнения оператора Begin Transaction, т.е. в предыдущую точку фиксации.  Из этого следует, что транзакция – это не только логическая единица работы, но и также единица восстановления при неудачном выполнении операций.

Восстановление транзакции

Транзакция начинается с успешного выполнения оператора Begin Transaction и заканчивается успешным выполнение либо оператора Commit, либо оператора Rollback. Оператор Commit устанавливает так называемую точку фиксации, которая соответствует концу логической единице работы и , следовательно, точке, в которой база данных находится

в согласованном состоянии. Выполнение же оператора Rollback возвращает базу данных в состоянии, в котором она находилась во время выполнения оператора Begin Transaction, т.е. в предыдущую точку фиксации.

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

 Транзакции обладают четырьмя важными свойствами : атомарность, согласованность, изоляция и долговечность. Атомарность . Транзакции атомарны (выполняется все или ничего). Согласованность. Транзакции защищают БД согласованно, т.е. транзакции переводят одно согласованное состояние БД в другое без обязательной поддержки согласованности в промежуточных точках. Изоляция. Транзакции отделены друг от друга. Это означает, что при запуске множества конкурирующих друг с другом транзакций, любое обновление определенной транзакции будет скрыто от остальных до тех пор, пока эта транзакция выполняется. Долговечность. Когда транзакция выполнена, ее обновления сохраняются, даже если в следующий момент произойдет сбой системы.

Транзакции обладают четырьмя важными свойствами : атомарность, согласованность, изоляция и долговечность.

  • Атомарность . Транзакции атомарны (выполняется все или ничего).
  • Согласованность. Транзакции защищают БД согласованно, т.е. транзакции переводят одно согласованное состояние БД в другое без обязательной поддержки согласованности в промежуточных точках.
  • Изоляция. Транзакции отделены друг от друга. Это означает, что при запуске множества конкурирующих друг с другом транзакций, любое обновление определенной транзакции будет скрыто от остальных до тех пор, пока эта транзакция выполняется.
  • Долговечность. Когда транзакция выполнена, ее обновления сохраняются, даже если в следующий момент произойдет сбой системы.
 Современные СУБД являются многопользовательскими системами, т. е. допускают параллельную одновременную работу большого количества пользователей. При этом пользователи не должны мешать друг другу. Так как логической единицей работы для пользователя является транзакция, то работа СУБД должна быть организована так, чтобы у пользователя складывалось впечатление, что их транзакции выполняются независимо от транзакций других пользователей. Различают три основные проблемы параллелизма: проблема потери результатов обновления; проблема незафиксированной зависимости (чтение «грязных» данных, неаккуратное считывание); проблема несовместимого анализа.

Современные СУБД являются многопользовательскими системами, т. е. допускают параллельную одновременную работу большого количества пользователей. При этом пользователи не должны мешать друг другу. Так как логической единицей работы для пользователя является транзакция, то работа СУБД должна быть организована так, чтобы у пользователя складывалось впечатление, что их транзакции выполняются независимо от транзакций других пользователей.

Различают три основные проблемы параллелизма:

  • проблема потери результатов обновления;
  • проблема незафиксированной зависимости (чтение «грязных» данных, неаккуратное считывание);
  • проблема несовместимого анализа.