
- •Поняття транзакції та блокування.
- •Правила acid. Атомарність, узгодженість, ізольованість, стійкість.
- •Типи неузгодженості даних при відсутності блокувань
- •Рівні блокувань за стандартом ansi (чотири).
- •Типи транзакцій. Явні, неявні та автоматичні транзакції.
- •Типи транзакцій. Розподілені транзакції.
- •Початок, завершення та відкат транзакції. Точка зберігання. (23)
- •Керування блокуваннями. Менеджер блокувань. Час очікування.
- •Рівні блокувань
- •Рівні ізоляції.
- •Типи блокувань
- •Мертві блокування.
- •Збережені процедури. Доцільність використання. Типи збережених процедур.
- •Етапи розробки збережених процедур.
- •Синтаксис створення, зміни, видалення та виклику збережених процедур
- •Використання параметрів у збережених процедурах.
- •Тригери. Застосування тригерів.
- •Функції columnsupdated() та update () у тілі тригера.
- •Створення, зміна та видалення тригеру.
- •Керування транзакціями в тілі тригера. Фіксація та відкат змін користувача.(7)
Типи транзакцій. Явні, неявні та автоматичні транзакції.
SQL Server підтримує три види визначення транзакцій: явне; автоматичне; неявне За замовчуванням SQL Server працює в режимі автоматичного початку транзакцій, коли кожна команда розглядається як окрема транзакція. Якщо команда виконана успішно, то її зміни фіксуються. Якщо при виконанні команди сталася помилка, то зроблені зміни скасовуються і система повертається в початковий стан. Коли користувачеві потрібно буде зробити транзакцію, що включає кілька команд, він повинен явно вказати транзакцію. Сервер працює тільки в одному з двох режимів визначення транзакцій: автоматичному чи неявному. Він не може перебувати в режимі виключно явного визначення транзакцій. Цей режим працює поверх двох інших. Для установки режиму автоматичного визначення транзакцій використовується команда: SET IMPLICIT_TRANSACTIONS OFF При роботі в режимі неявного початку транзакцій SQL Server автоматично починає нову транзакцію, як тільки завершена попередня.Установка режиму має на увазі визначення транзакцій виконується за допомогою іншої команди: SET IMPLICIT_TRANSACTIONS ON
Типи транзакцій. Розподілені транзакції.
SQL сервер підтримує три види транзакцій: Explicit transactions - явні, призначені для користувача транзакції запускаються за допомогою команди BEGIN TRANSACTION, а завершуються командою COMMIT TRANSACTION - фіксація транзакції, або ROLLBACK TRANSACTION - відкат транзакції; Autocommit transactions - даний тип транзакцій використовується при використанні команд DELETE, UPDATE, INSERT і застосовується автоматично. Це означає, що будь-яка з цих команд ЗАВЖДИ є транзакцією і не вимагає команд BEGIN TRANSACTION і COMMIT TRANSACTION (ROLLBACK TRANSACTION); Implicit transactions - даний тип транзакцій встановлюється за допомогою команди SET IMPLICIT_TRANSACTIONS ON. У цьому випадку при видачі деяких команд сервера (SELECT, UPDATE, OPEN тощо), видається команда BEGIN TRANSACTION (якщо транзакція ще не була відкрита), але по закінченню команди автоматичного завершення (відкату), транзакції не слід, тобто ви самі повинні видати команду COMMIT TRANSACTION або ROLLBACK TRANSACTION. Тому я не використовую даний режим в своїй практиці. До речі, за умовчанням цей режим на сервері відключений (SET IMPLICIT_TRANSACTIONS OFF). Отже, якщо оновлення даних полягає у використанні одиночної команди UPDATE, INSERT, DELETE - немає необхідності укладати її в BEGIN TRANSACTION ... COMMIT TRANSACTION (ROLLBACK TRANSACTION). У будь-якому іншому випадку ви зобов'язані використовувати Explicit transactions, тобто використовувати команди BEGIN TRANSACTION ... COMMIT TRANSACTION (ROLLBACK TRANSACTION).
Початок, завершення та відкат транзакції. Точка зберігання. (23)
Під управлінням транзакціями розуміється здатність керувати різними операціями над даними, які виконуються всередині реляційної СУБД. Перш за все, мається на увазі виконання операторів INSERT, UPDATE і DELETE.Наприклад, після створення таблиці (виконання оператора CREATE TABLE) не потрібно фіксувати результат: створення таблиці фіксується в базі даних автоматично. Точно так само за допомогою скасування транзакції не вдасться відновити тільки що вилучену оператором DROP TABLE таблицю. Після успішного виконання команд, укладених в тіло однієї транзакції, негайної зміни даних не відбувається. Для остаточного завершення транзакції існують так звані команди управління транзакціями, за допомогою яких можна або зберегти в базі даних всі зміни, що відбулися в ході її виконання, або повністю їх відмінити. Існують три команди, які використовуються для управління транзакціями: COMMIT - для збереження змін; ROLLBACK - для скасування змін; SAVEPOINT - для установки особливих точок повернення. Після завершення транзакції вся інформація про проведені зміни зберігається або в спеціально виділеній оперативної пам'яті, або в тимчасовій області відкату в самій базі даних до тих пір, поки не буде виконана одна з команд управління транзакціями. Потім всі зміни або фіксуються в базі даних, або відкидаються, а тимчасова область відкату звільняється. Команда COMMIT призначена для збереження в базі даних всіх змін, що відбулися в ході виконання транзакції. Вона зберігає результати всіх операцій, які мали місце після виконання останньої команди COMMIT або ROLLBACK. Команда ROLLBACK призначена для скасування транзакцій, ще не збережених в базі даних. Вона скасовує лише ті транзакції, які були виконані з моменту видачі останньої команди COMMIT або ROLLBACK. Команда SAVEPOINT (точка збереження) призначена для установки в транзакції особливих точок, куди в подальшому може бути проведений відкат (при цьому відкату всієї транзакції не відбувається). Команда має наступний вигляд: SAVEPOINT імя_точкі_сохраненія Вона служить виключно для створення точок збереження серед операторів, призначених для зміни даних. Ім'я точки збереження в пов'язаної з нею групі транзакцій має бути унікальним. Для відміни дії групи транзакцій, обмежених точками збереження, використовується команда ROLLBACK з наступним синтаксисом: ROLLBACK TO імя_точкі_сохраненія Оскільки за допомогою команди SAVEPOINT велике число транзакцій може бути розбите на менші і тому більш керовані групи, її застосування є одним із способів управління транзакціями.