ݺߣ

ݺߣShare a Scribd company logo
Стажировка-2014
Транзакции в БД и клиент-
серверные приложения
Занятие 6 (часть 2)
Стажировка-2014
Пример: в БД студентов нужно
сменить старосту группы, не
нарушая условие, что в каждый
момент времени в группе
ровно 1 староста.
Транзакции
Стажировка-2014
Транзакция – группа
последовательных операций,
которая логически неделима, и
выполняется целиком или не
выполняется вовсе.
Транзакции
Стажировка-2014
Atomicity (атомарность) –
гарантирует, что транзакция
фиксируется в системе только
полностью (гарантируется
СУБД).
Свойства транзакций
Стажировка-2014
Consistency (согласованность) –
если система находилась в
согласованном состоянии до
транзакции, то будет в этом
состоянии и после фиксации
транзакции (зависит от
разработчиков).
Свойства транзакций
Стажировка-2014
Isolation (изолированность) –
гарантирует, что параллельно
исполняющиеся транзакции могут
видеть только разрешенные
данные друг друга (гарантируется
СУБД, управляется
разработчиками).
Свойства транзакций
Стажировка-2014
Durability (надежность) –
гарантирует, что результат
зафиксированной транзакции
останется в системе даже после
отключения питания
(гарантируется СУБД).
Свойства транзакций
Стажировка-2014
MySQL server
Соединение (connection)
Память
Параллельные транзакции
Стажировка-2014
select * from
student where id = 3;
delete from
student where id = 3;
Параллельные транзакции
Стажировка-2014
Non-repeatable read
(неповторяемое чтение) – при
повторном чтении данных в
рамках транзакции они могут
оказаться удаленными или
измененными другой
транзакцией.
Проблемы параллельных транзакций
Стажировка-2014
Phantom reads (фантомное
чтение) – при повторном чтении
одних и тех же данных в рамках
транзакции возможны отличия
(новые строки, значения столбцов
и т.д.).
Проблемы параллельных транзакций
Стажировка-2014
Lost update (потерянное
обновление) – при
параллельном обновлении
одних и тех же данных одно из
обновлений теряется.
Проблемы параллельных транзакций
Стажировка-2014
Dirty read («грязное» чтение) –
чтение незафиксированных
данных другой транзакции,
которая в последствии
откатится.
Проблемы параллельных транзакций
Стажировка-2014
Serializable (упорядоченный) –
идентичен ситуации, когда все
транзакции выполняются строго
последовательно. Решает все
упомянутые проблемы.
Уровни изолированности транзакций
Стажировка-2014
Repeatable read (повторяемое
чтение) – гарантирует
повторяемость чтения, отсутствие
«грязного» чтения и отсутствие
потерянных обновлений.
Возможны фантомные чтения.
Уровни изолированности транзакций
Стажировка-2014
Read commited (чтение
зафиксированных данных) –
гарантирует отсутствие «грязного»
чтения и потерянных обновлений.
Возможны фантомные и
неповторяемые чтения.
Уровни изолированности транзакций
Стажировка-2014
Read uncommited (чтение
незафиксированных данных) –
гарантирует отсутствие
потерянных обновлений.
Возможны «грязные», фантомные
и неповторяемые чтения.
Уровни изолированности транзакций
Стажировка-2014
«+» - предотвращает, «-» - нет
Уровни изолированности транзакций

More Related Content

Стажировка-2014, занятие 6 (часть 2). Транзакции в БД