Спецкурс 2014, занятие 8. Транзакции в БД
description
Transcript of Спецкурс 2014, занятие 8. Транзакции в БД
![Page 1: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/1.jpg)
Спецкурс ОмГУ-2014
Транзакции в БД и клиент-серверные приложения
Занятие 8
![Page 2: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/2.jpg)
Спецкурс ОмГУ-2014
Пример: в БД студентов нужно сменить старосту группы, не нарушая условие, что в каждый момент времени в группе ровно 1 староста.
Транзакции
![Page 3: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/3.jpg)
Спецкурс ОмГУ-2014
Транзакция – группа последовательных операций, которая логически неделима, и выполняется целиком или не выполняется вовсе.
Транзакции
![Page 4: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/4.jpg)
Спецкурс ОмГУ-2014
Atomicity (атомарность) –гарантирует, что транзакция фиксируется в системе только полностью (гарантируется СУБД).
Свойства транзакций
![Page 5: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/5.jpg)
Спецкурс ОмГУ-2014
Consistency (согласованность) –если система находилась в согласованном состоянии до транзакции, то будет в этом состоянии и после фиксации транзакции (зависит от разработчиков).
Свойства транзакций
![Page 6: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/6.jpg)
Спецкурс ОмГУ-2014
Isolation (изолированность) –гарантирует, что параллельно исполняющиеся транзакции могут видеть только разрешенные данные друг друга (гарантируется СУБД, управляется разработчиками).
Свойства транзакций
![Page 7: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/7.jpg)
Спецкурс ОмГУ-2014
Durability (надежность) –гарантирует, что результат зафиксированной транзакции останется в системе даже после отключения питания (гарантируется СУБД).
Свойства транзакций
![Page 8: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/8.jpg)
Спецкурс ОмГУ-2014
MySQL server
Соединение (connection)
Память
Параллельные транзакции
![Page 9: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/9.jpg)
Спецкурс ОмГУ-2014
select * fromstudent where id = 3;
delete fromstudent where id = 3;
Параллельные транзакции
![Page 10: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/10.jpg)
Спецкурс ОмГУ-2014
Non-repeatable read (неповторяемое чтение) – при повторном чтении данных в рамках транзакции они могут оказаться удаленными или измененными другой транзакцией.
Проблемы параллельных транзакций
![Page 11: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/11.jpg)
Спецкурс ОмГУ-2014
Phantom reads (фантомное чтение) – при повторном чтении одних и тех же данных в рамках транзакции возможны отличия (новые строки, значения столбцов и т.д.).
Проблемы параллельных транзакций
![Page 12: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/12.jpg)
Спецкурс ОмГУ-2014
Lost update (потерянное обновление) – при параллельном обновлении одних и тех же данных одно из обновлений теряется.
Проблемы параллельных транзакций
![Page 13: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/13.jpg)
Спецкурс ОмГУ-2014
Dirty read («грязное» чтение) –чтение незафиксированных данных другой транзакции, которая в последствии откатится.
Проблемы параллельных транзакций
![Page 14: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/14.jpg)
Спецкурс ОмГУ-2014
Serializable (упорядоченный) –идентичен ситуации, когда все транзакции выполняются строго последовательно. Решает все упомянутые проблемы.
Уровни изолированности транзакций
![Page 15: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/15.jpg)
Спецкурс ОмГУ-2014
Repeatable read (повторяемое чтение) – гарантирует повторяемость чтения, отсутствие «грязного» чтения и отсутствие потерянных обновлений. Возможны фантомные чтения.
Уровни изолированности транзакций
![Page 16: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/16.jpg)
Спецкурс ОмГУ-2014
Read commited (чтение зафиксированных данных) –гарантирует отсутствие «грязного» чтения и потерянных обновлений. Возможны фантомные и неповторяемые чтения.
Уровни изолированности транзакций
![Page 17: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/17.jpg)
Спецкурс ОмГУ-2014
Read uncommited (чтение незафиксированных данных) –гарантирует отсутствие потерянных обновлений. Возможны «грязные», фантомные и неповторяемые чтения.
Уровни изолированности транзакций
![Page 18: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/18.jpg)
Спецкурс ОмГУ-2014
«+» - предотвращает, «-» - нет
Уровни изолированности транзакций
![Page 19: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/19.jpg)
Спецкурс ОмГУ-2014
Операция установления соединения с БД – очень «дорогая» по времени и ресурсам
Соединения приложения с БД
![Page 20: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/20.jpg)
Спецкурс ОмГУ-2014
Пул соединений (connection pool)– модуль, осуществляющий контроль за открытием, переиспользованием и закрытием подключений к БД
Соединения приложения с БД
![Page 21: Спецкурс 2014, занятие 8. Транзакции в БД](https://reader033.fdocument.pub/reader033/viewer/2022052602/559cb90d1a28abda558b4687/html5/thumbnails/21.jpg)
Спецкурс ОмГУ-2014
Connection pool для Java: dbcp
Соединения приложения с БД