Сеансы, транзакции и блокировки

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

особенности реальной работы СУБД
– 1 –
сеансы
– 2 –
параметры сеанса
– 3 –
примеры установки параметров сеанса
– 4 –
завершение сеанса
– 5 –
понятие транзакции
– 6 –
смысл транзакции
– 7 –
фиксация и откат транзакции
– 8 –
классическая транзакционная машина - банкомат
– 9 –
свойства классических транзакций
– 10 –
режимы выполнения транзакций
– 11 –
режим автоматической фиксации
– 12 –
неявный режим транзакций
– 13 –
фиксация транзакции в неявном режиме
– 14 –
откат транзакции в неявном режиме
– 15 –
схемы работы СУБД в неявном режиме выполнения транзакций
– 16 –
явный режим выполнения транзакций
– 17 –
операторы управления транзакциями  в явном режиме
– 18 –
операторы управления транзакциями  в явном режиме
– 19 –
– 20 –
– 21 –
– 22 –
– 23 –
– 24 –
– 25 –
– 26 –
– 27 –
– 28 –
– 29 –
– 30 –
– 31 –
– 32 –
– 33 –

При совместной работе нескольких пользователей СУБД должна гарантировать, что пользователи не будут мешать друг другу. При параллельном выполнении транзакций мо­гут возникать следующие проблемы.

– 34 –

Пример. На приеме заказов работают два оператора. Первый принял заказ на 30 мониторов. Когда он запрашивал склад, там числилось 40 мониторов, и он оформил продажу 30 мониторов из 40.

Параллельно с ним второй оператор принял заказ на 20 мониторов и, запросив склад, тоже получил 40. Закончив работу с заказом, он выполнил команду UPDATE и занес 20 как остаток мониторов.

После этого закончил работу с заказом первый оператор, который выполнил команду UPDATE и занес 10 как остаток мониторов.

В итоге они продали 50 мониторов из имеющихся 40, а на складе числится еще 10 мониторов. БД находится в несогласованном состоянии, а у фирмы возникли проблемы.

– 35 –
– 36 –

Первый оператор ввел заказ на 30 мониторов, но клиент захотел выяснить некоторые детали. Приложение первого оператора изменило остаток мониторов на складе на 10. В это время второй оператор пытается принять заказ от своего клиента на 20 мониторов, но его приложение показывает, что на складе всего 10 мониторов, и оператор вынужден отказать клиенту.

В этот момент клиент первого оператора принимает решение не покупать мониторы, и приложение выполняет откат транзакции (на складе снова 40 мониторов). Потерян заказчик, но еще хуже, если бы клиент второго оператора согласился на 10 оставшихся мониторов. Приложение второго оператора занесло бы ноль оставшихся мониторов, а после этого приложение первого оператора снова записало бы исходные 40 мониторов, хотя 10 их них уже проданы.

– 37 –

Пример строк-призраков. Администратор поручил секретарю отчет за месяц в двух видах (подробном и укрупненном). Когда приложение начало формировать первый отчет, оператор принял еще один заказ и к моменту формирования второго отчета в БД появились новые сведения. Приложение выполнило два одинаковых запроса и получило два разных результата. БД находится в согласованном состоянии, но приложение работает некорректно.

– 38 –
– 39 –
– 40 –
– 41 –
– 42 –
– 43 –
– 44 –

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

– 45 –
– 46 –
– 47 –
– 48 –
– 49 –
– 50 –
– 51 –
– 52 –
– 53 –
– 54 –
– 55 –
– 56 –
– 57 –
– 58 –
– 59 –
– 60 –