КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Синхронізаційні захоплення. Найрозповсюдженішим в централізованих СКБД (які включають системи, основані на архітектурі «клієнт-сервер») є підхід
Найрозповсюдженішим в централізованих СКБД (які включають системи, основані на архітектурі «клієнт-сервер») є підхід, заснований на дотриманні двохфазного протоколу синхронізаційних захоплень об’єктів БД. В загальних рисах протокол міститься в тому, що перед виконанням будь-якої операції в транзакції T над об’єктом БД r від імені транзакції T запитується синхронізаційне захоплення об’єкту r у відповідному режимі (в залежності від виду операції). Основними режимами синхронізаційних захоплень є:
Захоплення об’єктів декількома транзакціями по читанню сумісні, тобто декільком транзакціям припускається читати один й той же об’єкт, захоплення об’єкту однією транзакцією по читанню не сумісним з захопленням іншою транзакцією того ж об’єкту за записом, та захоплення одного об’єкту різними транзакціями за записом не сумісні. Правила сумісності захоплень одного об’єкту різними транзакціями зображені в наступній таблиці:
В першому стовпці наведені можливі стани об’єкту з точки зору синхронізаційних захоплень. При цьому «-» відповідає стану об’єкту, для якого не встановлене жодного захоплення. Транзакція, якій необхідне синхронізаційне захоплення об’єкту БД, вже захопленого іншою транзакцією в несумісному режимі, блокується до тих пір, доки захоплення з цього об’єкту не буде зняте. Відмітимо, що слово «ні» в таблиці відповідає описаним раніше можливим випадкам конфліктів транзакцій по доступу до об’єктів БД (WW, RW, WR). Сумісність S-захоплень відповідає тому, що конфлікт RR не існує. Для забезпечення серіалізації транзакцій (третього рівня ізольованності) синхронізаційні захоплення об’єктів, які вироблені за ініціативою транзакції, можна знімати лише при її завершені. Ця вимога породжує двохфазний протокол синхронізаційних захоплень - 2PL. В відповідності з цим протоколом виконання транзакції розбивається на дві фази:
Достатньо легко впевнитися, що при дотриманні двохфазного протоколу синхронізаційних захоплень дійсно забезпечується серіалізація транзакцій на третьому рівні ізольованності. Основна проблема міститься в тому, що ж треба вважати об’єктом для синхронізаційного захоплення?
В контексті реляційних БД можливі наступні альтернативи:
Коли мова йде про операції над об’єктами БД, то будь-яка операція над кортежем, фактично, є й операцією над сторінкою, в якій цей кортеж зберігається, та над відповідним відношенням, та над файлом, який містить відношення. Тому, дійсно, є вибір рівня об’єкту захоплення. Зрозуміло, що чим крупніший об’єкт синхронізаційного захоплення (логічний або фізичний), тим менше синхронізаційних захоплень буде підтримуватися в системі, та на це, відповідно, будуть витрачатися менші накладні витрати. Більш того, якщо обрати в якості рівня об’єктів для захоплень файл або відношення, то буде вирішена навіть проблема фантомів. Але вся біда в тому, що при використанні для захоплень крупних об’єктів підвищується ймовірність конфліктів транзакцій й тим самим зменшується припустимий ступінь їх паралельного виконання. Розробники багатьох систем починали з використання сторінкових захоплень, вважаючи, що деяким компромісом поміж прагненнями скоротити накладні витрати та зберегти достатньо високий рівень паралельності транзакцій. Але це не дуже добрий вибір. В більшості сучасних систем використовуються покортежні синхронізаційні захоплення. Але при цьому виникає чергове питання. Якщо одиницею захоплення є кортеж, то які синхронізаційні захоплення вимагаються при виконанні таких операцій як знищення відношення? Було б досить безглуздо перед виконанням такої операції вимагати захоплення всіх існуючих кортежів відношення. Окрім того, що не запобігло би можливості паралельної вставки в іншу транзакцію нового кортежа в відношення, яке знищується.
Дата добавления: 2014-01-04; Просмотров: 338; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |