Приветствую Вас, Гость! Регистрация RSS
Среда, 21.04.2021


Главная » Файлы » Мои файлы

Поняття транзакції. Транзакції та їх властивості
[ Скачать с сервера (142.5 Kb) ] 17.02.2018, 23:22
1.1. Поняття транзакції. Транзакції та їх властивості
Транзакція - це неподільна, з погляду впливу на СУБД, послідовність операцій маніпулювання даними. Для користувача транзакція виконується за принципом "усі чи нічого", тобто або транзакція виконується цілком і переводить базу даних з одного цілісного стану в інший цілісний стан, або, якщо за якимись причинами, одна з дій транзакції нездійсненна, чи відбулося яке-небудь порушення роботи системи, база даних повертається у вихідний стан, що був до початку транзакції (відбувається відкат транзакції).
В однокористувальницьких системах транзакції - це логічні одиниці роботи, після виконання яких база даних залишається в цілісному стані. Транзакції також є одиницями відновлення даних після збоїв - відновлюючись, система ліквідує сліди транзакцій, що не встигли успішно завершитися в результаті програмного чи апаратного збою. Ці дві властивості транзакцій визначають атомарность (неподільність) транзакції. У багатокористувацьких системах, крім того, транзакції служать для забезпечення ізольованої роботи окремих користувачів - користувачам, що одночасно працюють з однією базою даних, здається, що вони працюють як би в однокористувальницькій системі і не заважають один одному.
Визначення 1. Транзакція - це послідовність операторів маніпулювання даними, що виконується як єдине ціле (все чи нічого) і переводить базу даних з одного цілісного стану в інший цілісний стан.
Транзакція має чотири важливі властивості, відомі як властивості АУІД:
• (А) Атомарність. Транзакція виконується як атомарна операція - або виконується вся транзакція повністю, або вона повністю не виконується.
• (У) Узгодженість. Транзакція переводить базу даних з одного узгодженого (цілісного) стану в інший узгоджений (цілісний) стан. Усередині транзакції узгодженість бази даних може порушуватися.
• (І) Ізоляція. Транзакції різних користувачів не повинні заважати одна одній (наприклад, як якби вони виконувалися строго по черзі).
• (Д) Довговічність. Якщо транзакція виконана, то результати її роботи повинні зберегтися в базі даних, навіть якщо в наступний момент відбудеться збій системи.
Транзакція звичайно починається автоматично з моменту приєднання користувача до СУБД і продовжується доти, поки не відбудеться одне з наступних подій:
• Подано команду COMMIT WORK (зафіксувати транзакцію).
• Подано команду ROLLBACK WORK (відкотити транзакцію).
• Відбулося від'єднання користувача від СУБД.
• Відбувся збій системи.
Команда COMMIT WORK завершує поточну транзакцію й автоматично починає нову транзакцію. При цьому гарантується, що результати роботи завершеної транзакції фіксуються, тобто зберігаються в базі даних.
Команда ROLLBACK WORK приводить до того, що всі зміни, зроблені поточною транзакцією, відкочуються, тобто скасовуються так, начебто їх узагалі не було. При цьому автоматично починається нова транзакція.
При від'єднанні користувача від СУБД відбувається автоматична фіксація транзакцій.
При збої системи відбуваються більш складні процеси. Коротко суть їх зводиться до того, що при наступному запуску системи відбувається аналіз транзакцій, які виконувалися до моменту збою транзакцій. Ті транзакції, для яких була подана команда COMMIT WORK, але результати роботи яких не були занесені в базу даних виконуються знову (накочуються). Ті транзакції, для яких не була подана команда COMMIT WORK, відкочуються.

1.2. Порушення цілісності при виконанні транзакцій
Будь-яка база даних придатна до використання тільки тоді, коли її стан відповідає стану предметної області. Такі стани називають цілісними. Очевидно, що при зміні даних БД повинна переходити від одного цілісного стану до іншого. Однак, у процесі відновлення даних можливі ситуації, коли стан цілісності порушується.
Для ілюстрації можливого порушення цілісності бази даних розглянемо наступний приклад:
Приклад 1. Нехай є система, у якій зберігаються дані про підрозділи і працюючих у них співробітниках. Список підрозділів зберігається в таблиці DEPART(Dep_Id, Dep_Name, Dept_Kol), де Dept_Id - ідентифікатор підрозділу, Dept_Name - найменування підрозділу, Dept_Kol - кількість співробітників у підрозділі. Список співробітників зберігається в таблиці PERSON(Pers_Id, Pers_Name, Dept_Id), де Pers_Id - ідентифікатор співробітника, Pers_Name - ім'я співробітника, Dept_Id - ідентифікатор підрозділу, у якому працює співробітник:
Dept_Id Dept_Name Dept_Kol
1 Кафедра математики 3
2 Кафедра програмування 2
Таблиця 1. DEPART
Pers_Id Pers_Name Dept_Id
1 Іванов 1
2 Петров 2
3 Сидорчук 1
4 Пушняк 2
5 Шарко 1
Таблиця 2. PERSON
Обмеження цілісності цієї бази даних полягає в тому, що поле Dept_Kol не може заповнюватися довільними значеннями - це поле повинне містити кількість співробітників, що реально числяться в підрозділі.
З урахуванням цього обмеження можна укласти, що вставка нового співробітника в таблицю не може бути виконана однією операцією. При вставці нового співробітника необхідно одночасно збільшити значення поля Dept_Kol:
• Крок 1. Уставити співробітника в таблицю PERSON: INSERT INTO PERSON (6, Мутаков, 1)
• Крок 2. Збільшити значення поля Dept_Kol: UPDATE DEPART SET Dept=Dept+1 WHERE Dept_Id=1
Якщо після виконання першої операції і до виконання другий відбудеться збій системи, то реально буде виконані тільки перша операція і база даних залишиться в нецілісному стані.
Саме щоб уникнути таких ситуацій у СУБД уводиться поняття транзакції - атомарної дії над БД, що переводить її з одного цілісного стану в інший цілісний стан. Іншими словами, транзакція - це послідовність операцій, що повинні чи бути усі виконані, чи всі не виконані (усе чи нічого). Методом контролю за транзакціями є ведення журналу, у якому фіксуються всі зміни, чинені транзакцією в БД. Якщо під час обробки транзакції відбувається збій, транзакція відкочується - з журналу поновлюється стан БД на момент початку транзакції.
Категория: Мои файлы | Добавил: opteuropa | Теги: курсовая работа, магістерська, дипломн, курсач, скачать реферат, скачати доповідь, курсова, КОНТРОЛЬНА, лабораторна робота, доповідь з права.
Просмотров: 308 | Загрузок: 10 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Украина онлайн

Рейтинг@Mail.ru

подать объявление бесплатно