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

Post on 08-Jul-2015

107 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

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

Занятие 8

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

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

Транзакции

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

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

Транзакции

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

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

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

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

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

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

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

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

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

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

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

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

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

MySQL server

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

Память

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

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

select * fromstudent where id = 3;

delete fromstudent 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

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

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

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

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

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

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

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

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

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

Connection pool для Java: dbcp

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

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

Email: at@7bits.itSkype: anna_tarasenkoWeb: 7bits.ru

Вопросы?

top related