Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Властивості транзакцій. Проблеми паралельного виконання






Транзакція – це дія або серія дій, які здійснюють доступ або зміна вмісту бази даних і розглядаються СКБД як єдине ціле. Транзакція є логічною одиницею роботи, що виконується в БД. Вона може бути представлена окремою програмою, бути частиною алгоритму програми або навіть окремою командою (наприклад, командою INSERT або UPDATE) і містити довільну кількість операцій, виконуваних у даних.

Будь-яка транзакція завжди повинна переводити БД з одного узгодженого стану в інше, хоча допускається, що узгодженість із стояння бази буде порушуватися в ході виконання транзакції. Будь-яка транзакція завершується одним з двох можливих способів. У разі успішного завершення результати транзакції фіксуються (COMMIT) в БД, і остання переходить у нове узгоджене стан. Якщо виконання транзакції не увінчалося успіхом, вона скасовується. У цьому випадку у базі даних має бути відновлено то узгоджене стан, в якому вона перебувала до початку даної транзакції. Цей процес називається відкатом (ROLLBACK) транзакції. Реалізація в СУБД принципу збереження проміжних станів, підтвердження або відкату транзакцій забезпечується спеціальним механізмом, для підтримки якого створюється деяка системна структура, звана журналом транзакцій. Зафіксована транзакція не може бути відмінена.

У більшості мов маніпулювання даними для визначення меж окремих транзакцій використовуються оператори BEGIN TRANSACTION, COMMIT і ROLLBACK (або їх еквіваленти). Якщо ці обмежувачі не були використані, вся виконувана програма розцінюється як одна транзакція. СУБД автоматично виконає команду COMMIT при нормальному завершенні цієї програми. Аналогічно, у разі її аварійного завершення в БД автоматично буде виконана команда ROLLBACK. Існують деякі властивості, якими має володіти будь-яка з транзакцій.

1. Атомарність. Це властивість типу «все або нічого». Будь-яка транзакція являє собою неподільну одиницю роботи, яка може бути виконана вся цілком, або не виконано зовсім.

2. Узгодженість. Кожна транзакція повинна переводити базу даних з одного узгодженого стану в інше узгоджене стан.

3. Ізольованість. Всі операції виконуються незалежно одна від іншої. Інакше кажучи, проміжні результати незавершеною транзакції не повинні бути доступні іншим транзакціям.

4. Довговічність. Результати успішно завершеною (зафіксованої) транзакції повинні зберігатись в базі даних постійно і не повинні бути втрачені в результаті подальших збоїв.

Найважливішою метою створення баз даних є організація паралельного доступу багатьох користувачів до загальних даних, використовуваних ними спільно. Забезпечити паралельний доступ відносно нескладно, якщо всі користувачі тільки читають дані, поміщені в базу. У цьому випадку робота кожного з них не робить ніякого впливу на роботу інших користувачів. Однак якщо два або більше користувача одночасно звертаються до БД і хоча б один з них має на меті оновити збереженої в базі інформацію, можливе взаємне вплив процесів один на одного, здатне привести до неузгодженості даних.

Розглянемо три потенційні проблеми, які можуть мати місце при паралельному виконанні транзакцій: проблему втраченого оновлення, проблему залежності від нефіксованих результатів і проблему неузгодженою обробки. Якщо позначити операції читання, запису нових значень і відкат транзакції над БД відповідно R, W, O, то для першої транзакції це можуть бути операції R1, W1, O1, а для паралельно виконується другий транзакції операції R2, W2, O2.

Проблема втраченого оновлення виникає, коли результати цілком успішно завершеної операції оновлення однієї транзакції можуть бути перекриті результатами виконання іншої транзакції. Ця проблема може виникнути в результаті виконання послідовності операцій R1, R2, W2, W1.

Проблема залежності від нефіксованих результатів виникає в тому випадку, якщо одна з транзакцій отримає доступ до проміжними результатами виконання іншої транзакції до того, як вони будуть зафіксовані в базі даних. Може виникнути в результаті послідовності операцій R1, W1, R2, О1, W2. В обох наведених вище прикладах мова йшла про транзакції, які виконують оновлення даних в базі, наявність взаємовпливу між якими і викликало руйнування бази. Однак транзакції, які тільки зчитують інформацію з БД, також можуть давати неправильні результати, якщо їм будуть доступні для читання проміжні результати одночасно виконуються і ще не завершених транзакцій, оновлюють інформацію в базі. Виникає проблема неузгодженою обробки. В деяких випадках її називають читанням сміття або неповторністю читання. Проблема може виникнути в результаті виконання послідовності операторів R1, R2, W1, R2. В даному випадку друге R2 означає зчитування наступної порції даних.

З управлінням паралельністю або транзакціями в багатокористувацької СУБД пов'язані важливі поняття серіалізації транзакцій і серіального плану виконання суміші транзакцій. Під серіалізацією паралельно виконуваних транзакцій розуміється такий порядок планування їх роботи, при якому сумарний ефект суміші транзакцій еквівалентний ефекту їх деякого послідовного виконання.

Серіальний план виконання суміші транзакцій – це такий план, який призводить до серіалізації транзакцій. Зрозуміло, що якщо вдається домогтися дійсно серіального виконання суміші транзакцій, то для кожного користувача, з ініціативи якого утворена транзакція, присутність інших транзакцій буде непомітно (якщо не вважати деякого уповільнення роботи порівняно з однокористувальницька режимом).

Існують два основних методи управління паралельністю, що дозволяють організувати безпечне одночасне виконання транзакцій при дотриманні певних обмежень: метод блокування і метод часових міток

По суті, і блокування, і використання тимчасових міток є консервативними, або песимістичними, підходами, оскільки вони відкладають виконання транзакцій, здатних у майбутньому в той чи інший момент часу увійти в конфлікт з іншими транзакціями. Оптимістичні методи, що будуються на припущенні, що ймовірність конфлікту невисока, тому вони допускають асинхронне виконання транзакцій, а перевірка на наявність конфлікту відкладається на момент їх завершення і фіксації в БД.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.