Тема_9 (1122360), страница 3
Текст из файла (страница 3)
Базы данных33УправлениОбщее понятие транзакции и основные характеристикитранзакций (28) Сериализация транзакций (1)Чтобы добиться изолированности транзакций, в СУБДдолжны использоваться какие-либо методы регулированиясовместного выполнения транзакцийПусть в системе одновременно выполняется некотороемножество транзакций S = {T1, T2, …, Tn}План (способ) выполнения набора транзакций S в котором, вообще говоря, чередуются или реальнопараллельно выполняются операции разных транзакцийназывается сериальным, если результат совместноговыполнения транзакций эквивалентен результату некоторогопоследовательного выполнения этих же транзакций (Ti1, Ti2,…, Tin)03.12.2009С.Д.Кузнецов.
Базы данных34УправлениОбщее понятие транзакции и основные характеристикитранзакций (29) Сериализация транзакций (2)Сериализация транзакций – это механизм их выполнения понекоторому сериальному плануОбеспечение такого механизма является основной функциейкомпонента СУБД, ответственного за управление транзакциямиСистема, в которой поддерживается сериализация транзакций,обеспечивает реальную изолированность пользователей.Основная реализационная проблема состоит в выборе методасериализации набора транзакций, который не слишкомограничивал бы чередование их операций или реальнуюпараллельностьПриходящим на ум тривиальным решением являетсядействительно последовательное выполнение транзакцийНо существуют ситуации, в которых можно выполнять операторыразных транзакций в любом порядке с сохранением свойствасериальностиПримерами могут служить только читающие транзакции, а такжетранзакции, не конфликтующие по объектам базы данных03.12.2009С.Д.Кузнецов. Базы данных35УправлениОбщее понятие транзакции и основные характеристикитранзакций (30) Сериализация транзакций (3)Между транзакциями T1 и T2 могут существоватьследующие виды конфликтов: W/W – транзакция T2 пытается изменять объект, измененныйне закончившейся транзакцией T1oR/W – транзакция T2 пытается изменять объект,прочитанный не закончившейся транзакцией T1oналичие такого конфликта может привести к возникновениюситуации неповторяющихся чтенийW/R – транзакция T2 пытается читать объект, измененный незакончившейся транзакцией T1oналичие такого конфликта может привести к возникновениюситуации потерянных измененийналичие такого конфликта может привести к возникновениюситуации «грязного» чтенияПрактические методы сериализации транзакцийосновываются на учете этих конфликтов03.12.2009С.Д.Кузнецов.
Базы данных36УправлениМетоды сериализации транзакций (1)Существуют два базовых подхода к сериализации транзакций:основанный на синхронизационных захватах объектов базыданных иоснованный на использовании временных меток.Суть обоих подходов состоит в обнаружении конфликтовтранзакций и их устраненииНиже мы рассмотрим эти подходы сравнительно подробноКроме того, кратко обсудим возможности использования версийобъектов базы данных для ускорения выполнения «толькочитающих» транзакций,т.е. транзакций, в которых не выполняются операции изменениябазы данных03.12.2009С.Д.Кузнецов. Базы данных37УправлениМетоды сериализации транзакций (2)Предварительно заметим, что для каждого из подходов имеютсядве разновидности:При применении пессимистических методов,пессимистическая иоптимистическая.ориентированных на ситуации, когда конфликты возникают часто,конфликты распознаются и разрешаются немедленно при ихвозникновенииОптимистические методы основываются на том, что результатывсех операций модификации базы данных сохраняются в рабочейпамяти транзакцийРеальная модификация базы данных производится только на стадиификсации транзакцииТогда же проверяется, не возникают ли конфликты с другимитранзакциями03.12.2009С.Д.Кузнецов.
Базы данных38УправлениМетоды сериализации транзакций (3)Далее мы ограничимся рассмотрениемболее распространенныхпессимистических разновидностейметодов сериализации транзакцийПессимистические методы сравнительнопросто трансформируются в своиоптимистические варианты03.12.2009С.Д.Кузнецов. Базы данных39УправлениМетоды сериализации транзакций (4)Синхронизационные блокировки (1)Наиболее распространенным в централизованных СУБДявляется подход, основанный на соблюдении двухфазногопротокола синхронизационных захватов объектов баз данныхвключающих системы, основанные на архитектуре«клиент-сервер»Two-Phase Locking Protocol, 2PLВ общих чертах подход состоит в том, что перед выполнениемлюбой операции в транзакции T над объектом базы данных o отимени транзакции T запрашивается синхронизационнаяблокировка объекта o в соответствующем режимев зависимости от вида операции03.12.2009С.Д.Кузнецов.
Базы данных40УправлениМетоды сериализации транзакций (5)Синхронизационные блокировки (2)Основными режимами синхронизационныхблокировок являются следующие:совместный режим – S (Shared)oозначающий совместную (по чтению) блокировкуобъекта и требуемый для выполнения операциичтения объектамонопольный режим – X (eXclusive)oозначающий монопольную (по записи) блокировкуобъекта и требуемый для выполнения операцийвставки, удаления и модификации объекта03.12.2009С.Д.Кузнецов. Базы данных41УправлениМетоды сериализации транзакций (6)Синхронизационные блокировки (3)Блокировки одних и тех же объектов по чтениюнесколькими транзакциями совместимы,т.е.
нескольким транзакциям допускаетсяодновременно читать один и тот же объектБлокировка объекта одной транзакцией почтению не совместима с блокировкой другойтранзакцией того же объекта по записи,т.е. никакой транзакции нельзяo изменять объект, читаемый некоторой транзакцией•кроме самой этой транзакции, иникакой транзакции нельзяo читать объект, изменяемый некоторой транзакцией•03.12.2009кроме самой этой транзакцииС.Д.Кузнецов.
Базы данных42УправлениМетоды сериализации транзакций (7)Синхронизационные блокировки (4)Блокировки одного и того же объекта позаписи разными транзакциями несовместимыт.е. никакой транзакции нельзя изменятьобъект, изменяемый некоторой транзакциейoкроме самой этой транзакции03.12.2009С.Д.Кузнецов. Базы данных43УправлениМетоды сериализации транзакций (8)Синхронизационные блокировки (5)Правила совместимостизахватов одного объектаразными транзакциямиприведены в таблицеВ первом столбце приведенывозможные состояния объектас точки зрения синхронизационных захватовПри этом "-" соответствует состоянию объекта, для которогоне установлен никакой захватТранзакция, запросившая синхронизационный захватобъекта БД, уже захваченный другой транзакцией внесовместимом режиме, блокируется до тех пор, пока захватс этого объекта не будет снят03.12.2009С.Д.Кузнецов.
Базы данных44УправлениМетоды сериализации транзакций (9)Синхронизационные блокировки (6)Заметим, что слово«нет»отсутствие совместимостиблокировокв этой таблице соответствует описанным ранеевозможным случаям конфликтов транзакций подоступу к объектам базы данных (W/W, R/W,W/R)Совместимость S-блокировок соответствуеттому, что конфликт R/R не существует03.12.2009С.Д.Кузнецов. Базы данных45УправлениМетоды сериализации транзакций(10)Синхронизационныеблокировки (7)Для обеспечения сериализации транзакцийтретьего уровня изолированностисинхронизационные блокировки объектов,произведенные по инициативе транзакции,можно снимать только при ее завершенииЭто требование порождает двухфазныйпротокол синхронизационных захватов – 2PLВ соответствии с этим протоколом выполнениетранзакции разбивается на две фазы:первая фаза транзакции (выполнение операций надбазой данных) – накопление блокировок;вторая фаза (фиксация или откат) – снятие блокировок03.12.2009С.Д.Кузнецов.
Базы данных46УправлениМетоды сериализации транзакций(11)Синхронизационныеблокировки (6)Достаточно легко убедиться, что при соблюдениидвухфазного протокола синхронизационных блокировокдействительно обеспечивается сериализация транзакций натретьем уровне изолированностиТакже легко видеть, что для обеспечения отсутствияпотерянных данных достаточно блокировать в режиме X изменяемые объекты базы данных и удерживать эти блокировки до конца транзакции,а для обеспечения отсутствия чтения «грязных» данныхдостаточно блокировать в режиме X изменяемые объекты до концатранзакции и блокировать в режиме S читаемые объекты на времявыполнения операции чтения03.12.2009С.Д.Кузнецов. Базы данных47УправлениМетоды сериализации транзакций(12)Синхронизационныеблокировки (7)Основная проблема состоит в том, что следует считатьобъектом для синхронизационного захвата?В контексте реляционных баз данных возможны следующиеальтернативы: файл (сегмент в терминах System R) – физический (с точкизрения базы данных) объект, область хранения несколькихтаблиц и, возможно, индексов таблица – логический объект, соответствующий множествукортежей данной таблицы страница данных – физический объект, хранящий кортежиодной или нескольких таблиц, индексную или служебнуюинформацию кортеж – элементарный физический объект базы данных03.12.2009С.Д.Кузнецов.
Базы данных48УправлениМетоды сериализации транзакций(13)Синхронизационныеблокировки (8)На самом деле, любая операция над объектомбазы данных фактически воздействует и наобъемлющие его объектыНапример, операция над кортежем является иоперациейв которой этот кортеж хранится, инад страницей,над соответствующей таблицей,и над файлом, содержащим таблицуПоэтому действительно имеется выбор уровняобъекта блокировки.03.12.2009С.Д.Кузнецов. Базы данных49УправлениМетоды сериализации транзакций(14)Синхронизационныеблокировки (9)Понятно, что для поддержки блокировоктребуются системные ресурсы, и что чемкрупнее объект синхронизационного захватаневажно, какой природы этот объект – логический илифизический,тем меньше синхронизационных блокировокбудет поддерживаться в системе, и на это,соответственно, будут тратиться меньшиенакладные расходыБолее того, если устанавливать блокировки науровне файлов или таблиц, то будет решенадаже проблема фантомов03.12.2009С.Д.Кузнецов.