Спецкурс-2015. Занятие 05. Системы контроля версий
Спецкурс 2014, занятие 8. Транзакции в БД
1. Транзакции в БД и клиент-
серверные приложения
Спецкурс ОмГУ-2014
Занятие 8
2. Пример: в БД студентов нужно
сменить старосту группы, не
нарушая условие, что в каждый
момент времени в группе
ровно 1 староста.
Спецкурс ОмГУ-2014
Транзакции
3. Транзакция – группа
последовательных операций,
которая логически неделима, и
выполняется целиком или не
выполняется вовсе.
Спецкурс ОмГУ-2014
Транзакции
4. Atomicity (атомарность) –
гарантирует, что транзакция
фиксируется в системе только
полностью (гарантируется
СУБД).
Спецкурс ОмГУ-2014
Свойства транзакций
5. Consistency (согласованность) –
если система находилась в
согласованном состоянии до
транзакции, то будет в этом
состоянии и после фиксации
транзакции (зависит от
разработчиков).
Спецкурс ОмГУ-2014
Свойства транзакций
6. Isolation (изолированность) –
гарантирует, что параллельно
исполняющиеся транзакции могут
видеть только разрешенные
данные друг друга (гарантируется
СУБД, управляется
разработчиками).
Спецкурс ОмГУ-2014
Свойства транзакций
7. Durability (надежность) –
гарантирует, что результат
зафиксированной транзакции
останется в системе даже после
отключения питания
(гарантируется СУБД).
Спецкурс ОмГУ-2014
Свойства транзакций
10. Проблемы параллельных транзакций
Non-repeatable read
(неповторяемое чтение) – при
повторном чтении данных в
рамках транзакции они могут
оказаться удаленными или
измененными другой
транзакцией.
Спецкурс ОмГУ-2014
11. Проблемы параллельных транзакций
Phantom reads (фантомное
чтение) – при повторном чтении
одних и тех же данных в рамках
транзакции возможны отличия
(новые строки, значения столбцов
и т.д.).
Спецкурс ОмГУ-2014
12. Проблемы параллельных транзакций
Lost update (потерянное
обновление) – при
параллельном обновлении
одних и тех же данных одно из
обновлений теряется.
Спецкурс ОмГУ-2014
13. Проблемы параллельных транзакций
Dirty read («грязное» чтение) –
чтение незафиксированных
данных другой транзакции,
которая в последствии
откатится.
Спецкурс ОмГУ-2014
14. Уровни изолированности транзакций
Serializable (упорядоченный) –
идентичен ситуации, когда все
транзакции выполняются строго
последовательно. Решает все
упомянутые проблемы.
Спецкурс ОмГУ-2014
15. Уровни изолированности транзакций
Repeatable read (повторяемое
чтение) – гарантирует
повторяемость чтения, отсутствие
«грязного» чтения и отсутствие
потерянных обновлений.
Возможны фантомные чтения.
Спецкурс ОмГУ-2014
16. Уровни изолированности транзакций
Read commited (чтение
зафиксированных данных) –
гарантирует отсутствие «грязного»
чтения и потерянных обновлений.
Возможны фантомные и
неповторяемые чтения.
Спецкурс ОмГУ-2014
19. Соединения приложения с БД
Спецкурс ОмГУ-2014
Операция установления
соединения с БД – очень
«дорогая» по времени и
ресурсам
20. Соединения приложения с БД
Пул соединений (connection pool)
– модуль, осуществляющий
контроль за открытием,
переиспользованием и закрытием
подключений к БД
Спецкурс ОмГУ-2014