
- •1 Введення в транзакції
- •2 Acid-властивості транзакцій
- •3 Блокування
- •4 Управління транзакціями
- •5 Управління транзакціями в середовищі ms sql Server
- •5.1 Визначення транзакцій
- •5.2 Явні транзакції
- •5.3 Вкладені транзакції
- •6 Управління блокуваннями
- •7 "Мертві" блокування
- •8 Рівні ізоляції sql Server
16. Лекція: Транзакції і блокування:
Приводиться визначення транзакції і її властивостей; представлені явні, неявні, автоматичні і вкладені транзакції. Описуються засоби обробки і управління транзакціями. Розглядається механізм збереження і відкоту транзакцій. Вводиться поняття паралелі в роботі бази даних і методи управління паралеллю з використанням блокувань. Приводиться опис рівнів блокувань і рівнів ізоляції серверу. Виділяються основні і спеціальні типи блокувань.
План
1 Введення в транзакції
2 ACID-властивості транзакцій
3 Блокування
4 Управління транзакціями
5 Управління транзакціями в середовищі MS SQL Server
5.1 Визначення транзакцій
5.2 Явні транзакції
5.3 Вкладені транзакції
6 Управління блокуваннями
7 "Мертві" блокування
8 Рівні ізоляції SQL Server
1 Введення в транзакції
Концепція транзакцій – невід'ємна частина будь-якої клієнт-серверної бази даних.
Під транзакцією розуміється неподільна з погляду БД послідовність операторів маніпулювання даними (читання, видалення, вставки, модифікації), що приводить до одного з двох можливих результатів: або послідовність виконується, якщо всі оператори правильні, або вся транзакція відкатується, якщо хоча б один оператор не може бути успішно виконаний. Обробка транзакцій гарантує цілісність інформації в базі даних. Таким чином, транзакція переводить базу даних з одного цілісного стану в інший.
Підтримка механізму транзакцій – показник рівня розвиненості СУБД. Коректна підтримка транзакцій одночасно є основою забезпечення цілісності БД. Транзакції також складають основу ізольованості в розрахованих на багато користувачів системах, де з однією БД паралельно можуть працювати декілька користувачів або прикладних програм. Одна з основних задач СУБД – забезпечення ізольованості, тобто створення такого режиму функціонування, при якому кожному користувачу здавалося б, що БД доступна тільки йому. Таку задачу СУБД прийнято називати паралелізмом транзакцій.
Більшість виконуваних дій проводиться в тілі транзакцій. За умовчанням кожна команда виконується як самостійна транзакція. При необхідності користувач може явно вказати її початок і кінець, щоб мати нагоду включити в неї декілька команд.
При виконанні транзакції система управління базами даних повинна дотримуватися певних правил обробки набору команд, що входять в транзакцію. Зокрема, розроблено чотири правила, відомі як вимоги ACID, вони гарантують правильність і надійність роботи системи.
2 Acid-властивості транзакцій
Характеристики транзакцій описуються в термінах ACID (Atomicity, Consistency, Isolation, Durability – неподільність, узгодженість, ізольованість, стійкість ).
Транзакція неподільна в тому значенні, що є єдиним цілим. Всі її компоненти або мають місце, або ні. Не буває часткової транзакції. Якщо може бути виконана лише частина транзакції, вона відхиляється.
Транзакція є злагодженою, тому що не порушує бізнес-логіку і відносини між елементами даних. Ця властивість дуже важлива при розробці клієнт-серверних систем, оскільки в сховищі даних поступає велика кількість транзакцій від різних систем і об'єктів. Якщо хоча б одна з них порушить цілісність даних, то всі інші можуть видати невірні результати.
Транзакція завжди ізольована, оскільки її результати самодостатні. Вони не залежать від попередніх або подальших транзакцій – ця властивість називається ізольованістю і означає, що транзакції в послідовності незалежні.
Транзакція стійка. Після свого завершення вона зберігається в системі, яку ніщо не може повернути в початковий (до початку транзакції ) стан, тобто відбувається фіксація транзакції, що означає, що її дія постійна навіть при збої системи. При цьому мається на увазі якась форма зберігання інформації в постійній пам'яті як частина транзакції .
Вказані вище правила виконує сервер. Програміст лише вибирає потрібний рівень ізоляції, піклується про дотримання логічної цілісності даних і бізнес-правил. На нього покладаються обов'язки по створенню ефективних і логічно вірних алгоритмів обробки даних. Він вирішує, які команди повинні виконуватися як одна транзакція, а які можуть бути розбиті на декілька послідовно виконуваних транзакцій. Слід по можливості використовувати невеликі транзакції, тобто включаючі якомога менше команд і змінюючі мінімум даних. Дотримання цієї вимоги дозволить найефективнішим чином забезпечити одночасну роботу з даними безлічі користувачів.