22
Спецкурс ОмГУ-2014 Транзакции в БД и клиент- серверные приложения Занятие 8

Спецкурс 2014, занятие 8. Транзакции в БД

  • Upload
    7bits

  • View
    104

  • Download
    2

Embed Size (px)

DESCRIPTION

Занятие со спецкурса в ОмГУ, 2014 год

Citation preview

Page 1: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Транзакции в БД и клиент-серверные приложения

Занятие 8

Page 2: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Пример: в БД студентов нужно сменить старосту группы, не нарушая условие, что в каждый момент времени в группе ровно 1 староста.

Транзакции

Page 3: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

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

Транзакции

Page 4: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Atomicity (атомарность) –гарантирует, что транзакция фиксируется в системе только полностью (гарантируется СУБД).

Свойства транзакций

Page 5: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Consistency (согласованность) –если система находилась в согласованном состоянии до транзакции, то будет в этом состоянии и после фиксации транзакции (зависит от разработчиков).

Свойства транзакций

Page 6: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Isolation (изолированность) –гарантирует, что параллельно исполняющиеся транзакции могут видеть только разрешенные данные друг друга (гарантируется СУБД, управляется разработчиками).

Свойства транзакций

Page 7: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Durability (надежность) –гарантирует, что результат зафиксированной транзакции останется в системе даже после отключения питания (гарантируется СУБД).

Свойства транзакций

Page 8: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

MySQL server

Соединение (connection)

Память

Параллельные транзакции

Page 9: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

select * fromstudent where id = 3;

delete fromstudent where id = 3;

Параллельные транзакции

Page 10: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Non-repeatable read (неповторяемое чтение) – при повторном чтении данных в рамках транзакции они могут оказаться удаленными или измененными другой транзакцией.

Проблемы параллельных транзакций

Page 11: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Phantom reads (фантомное чтение) – при повторном чтении одних и тех же данных в рамках транзакции возможны отличия (новые строки, значения столбцов и т.д.).

Проблемы параллельных транзакций

Page 12: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Lost update (потерянное обновление) – при параллельном обновлении одних и тех же данных одно из обновлений теряется.

Проблемы параллельных транзакций

Page 13: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Dirty read («грязное» чтение) –чтение незафиксированных данных другой транзакции, которая в последствии откатится.

Проблемы параллельных транзакций

Page 14: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Serializable (упорядоченный) –идентичен ситуации, когда все транзакции выполняются строго последовательно. Решает все упомянутые проблемы.

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

Page 15: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Repeatable read (повторяемое чтение) – гарантирует повторяемость чтения, отсутствие «грязного» чтения и отсутствие потерянных обновлений. Возможны фантомные чтения.

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

Page 16: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Read commited (чтение зафиксированных данных) –гарантирует отсутствие «грязного» чтения и потерянных обновлений. Возможны фантомные и неповторяемые чтения.

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

Page 17: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Read uncommited (чтение незафиксированных данных) –гарантирует отсутствие потерянных обновлений. Возможны «грязные», фантомные и неповторяемые чтения.

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

Page 18: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

«+» - предотвращает, «-» - нет

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

Page 19: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Операция установления соединения с БД – очень «дорогая» по времени и ресурсам

Соединения приложения с БД

Page 20: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Пул соединений (connection pool)– модуль, осуществляющий контроль за открытием, переиспользованием и закрытием подключений к БД

Соединения приложения с БД

Page 21: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Connection pool для Java: dbcp

Соединения приложения с БД

Page 22: Спецкурс 2014, занятие 8. Транзакции в БД

Спецкурс ОмГУ-2014

Email: [email protected]: anna_tarasenkoWeb: 7bits.ru

Вопросы?