Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методи сер_ал_зац_ї транзакц_й.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
56 Кб
Скачать
☆

2. Метод часових міток

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

Основна ідея методу полягає в наступному: якщо транзакція A почалася раніш транзакції B, те система забезпечує такий режим виконання, як якби A була цілком виконана до початку B.

Для цього кожній транзакції T надається часова мітка t, що відповідає часу початку T. При виконанні операції над об'єктом r бази даних транзакція T позначає його своєю часовою міткою і типом операції ( читання чи зміна).

Перед виконанням операції над об'єктом r транзакція B виконує наступні дії:

  • Перевіряє, чи не закінчилася транзакція A, що позначила цей об'єкт. Якщо A закінчилася, B позначає об'єкт r своєю часовою міткою і виконує операцію.

  • Якщо транзакція A не завершилася, то B перевіряє конфліктність операцій. Якщо операції неконфліктні, при об'єкті r залишається чи проставляється часова мітка з меншим значенням (більш рання), і транзакція B виконує свою операцію.

  • Якщо операції B і A конфліктують, то якщо t(A) > t(B) (тобто транзакція A є  "молодшою" за B), те транзакція A відкочується і, одержавши нову часову мітку, починається заново. Транзакція B продовжує роботу.

  • Якщо ж t(A) < t(B) (A "старше" B), то транзакція B відкочується і, одержавши нову часову мітку, починається заново. Транзакція A продовжує роботу.

У підсумку система забезпечує таку роботу, при якій при виникненні конфліктів завжди відкочується більш молода транзакція ( щопочалася пізніше).

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

До інших недоліків методу часових міток відносяться потенційно більш часті відкоти транзакцій, чим у випадку використання блокувань. Це зв'язано з тим, що конфліктність транзакцій визначається більш грубо.

 

3. Механізм виділення версій даних

Використання блокувань гарантує серіальність планів виконання суміші транзакцій за рахунок загального уповільнення роботи - конфліктуючі транзакції очікують, коли транзакція, яка першою заблокувала певний об'єкт, не звільнить його. Без блокувань не обійтися, якщо всі транзакції змінюють дані. Але якщо в суміші транзакцій присутні як транзакції, що змінюють дані, так і тільки читаючі дані, можна застосувати альтернативний механізм забезпечення серіальностіи, вільний від недоліків методу блокувань. Цей метод полягає в тому, що транзакціям, що читає дані, надається як би "своя" версія даних, що була в момент початку читаючої транзакції. При цьому транзакція не накладає блокувань на читанідані, і, тому, не блокує інші транзакції, що змінюють дані. Такий механізм називається механізм виділення версій і полягає у використанні журналу транзакцій для генерації різних версій даних.

Журнал транзакцій призначений для виконання операції відкоту при неуспішному виконанні транзакції чи для відновлення даних після збою системи. Журнал транзакцій містить старі копії даних, змінених транзакціями.

Коротко суть методу полягає в наступному:

  • Для кожної транзакції (чи запиту) запам'ятовується поточний системний номер (SCN - System Current Number). Чим пізніше почата транзакція, тим більше її SCN.

  • При записі сторінок даних на диск фіксується SCN транзакції, що робить цей запис. Цей SCN стає поточним системним номером сторінки даних.

  • Транзакції, тільки читаючі дані, не блокують нічого в базі даних.

  • Якщо транзакція A читає сторінку даних, то SCN транзакції A порівнюється з SCN сторінки даних, що читається.

  • Якщо SCN сторінки даних менше чи дорівнює SCN транзакції A, то транзакція A читає цю сторінку.

  • Якщо SCN сторінки даних більше SCN транзакції A, то це означає, що деяка транзакція B, що почалася пізніше транзакції A, устигла змінити чи зараз змінює дані сторінки. У цьому випадку транзакція A переглядає журнал транзакція назад у пошуку першого запису про зміну потрібної сторінки даних з SCN меншим, ніж SCN транзакції A. Знайшовши такий запис, транзакція A використовує старий варіант дані сторінки.

C використанням механізму виділення версій зважується проблема несумісного аналізу. Транзакція A, що почалася першою, не гальмує конкуруючу транзакцію B. При виявленні конфлікту  транзакції A надається своя версія даних, що була на момент початку транзакції A.