Введение в системы БД (542480), страница 151
Текст из файла (страница 151)
Пусть транзакция Т устанавливает блокировку некоторых интенсивно используемых элементов данных, после чего выполнение этой транзакции прекращается системным планировщиком, т.е. транзакция переходит в состояние ожидания, например из-за того, что время, отведенное ей для выполнения, истекло. Такая ситуация способствует образованию веренииы транзакций, каждая из которых ожидает продолжения своего выполнения и уже успела установить блокировку некоторых элементов интенсивно используемых данных. Когда транзакция Т выйдет из подобного состояния ожидания, она должна будет завершить обработку и снять блокировку используемых ею элементов данных. Однако именно из-за того, что заблокированными являются интенсивно используемые данные, велика вероятность того, что транзакция Т выйдет из со- Глава 15.
Параллельность 591 15.5 15.6. 15.7. 15.8. стояния ожидания слишком рано, еще до того, как другая транзакция завершит работу с другим требуемым транзакции Т элементом данных. Поэтому транзакция Т не сможет продолжить выполнение своих операций и уже по собственной инициативе переведет себя в состояние ожидания. Суть проблемы заключается в том, что в большинстве случаев (но не во всех) планирование является частью функций базовой операционной системы, а не СУБД, поэтому оно организуется на основе совершенно других допущений.
По наблюдениям авторов этой работы однажды образовавшаяся вереница проявляет тенденцию к стабильности. В результате система оказывается в состоянии постоянного "переполнения блокировками" и большинство машинных циклов затрачивается на обработку переключений, а не на выполнение какой-либо полезной работы. В качестве возможного решения этой проблемы, помимо замены способа планирования, можно предложить установку блокировок в произвольном порядке, а не на основе схемы "первым поступил — первым обработан".
Езчгагап К.Р., Огау 1.Х., 1.опе й.А., Тга!8ег 1Л.. ТЬе )чог!опз ог Сопя!згепсу апд РгегйсаГе Еос1гз 1п а Рага Вазе Бузгет П САСМ. — 14очетЬег, 1976. — 19, № 11. В этой работе впервые предложено строгое теоретическое описание основ управления параллельностью. Ггапазгей Р., йоЬ!пзоп 1.Т. Е!т!гаг!опз оп Сопсцпепсу !и Тгапзасйоп Ргосезгйпй /l АСМ ТОРЕ.
— Магсй, 1985, — 10, № 1. См. комментарий к [15.14). Ггапазхе!с Р., йоЬ!пзоп 1.Т., ТЬотагйап А. Сопсцггепсу Сои!го! гог Н!8Ь Сопгепйоп Епч!гоптепгз О!Ькй — ! 992. — 17, № 2. В статье делается заявление, что в будущем системы обработки транзакций, вероятно, будут обеспечивать гораздо большую степень параллельности, чем современные системы (по разным причинам). Поэтому в них будут гораздо чаще возникать конфликтные ситуации на уровне данных. Затем авторы представляют "несколько концепций управления параллельностью [без использования блокировки] и методов планирования транзакций, которые применимы к средам с большим количеством конфликтных ситуаций". Преимущества такого подхода подтверждаются экспериментами с различными имитационными моделями. бгау 1М Ехрепепсе илгЬ 1Ье Бумет й Еосй Мапайег.
!ВМ Бап )озе йезеагсЬ ЕаЬогагогу шгегпа! тепю, ! 980. Эта работа представляет собой набор заметок, а не законченную статью, причем они в настоящее время уже несколько устарели. Тем не менее в ней содержится несколько интересных утверждений. ° Использование блокировок связано с накладными расходами в размере 1056 при работе с интерактивными транзакциями и в размере 1'Ь при работе с пакетными транзакциями. ° Желательно поддерживать разные уровни детализация блокировок. ° Приветствуется автоматическая эскалация уровня блокировок. ° Ситуации взаимной блокировки очень редко возникают на практике и никогда не включают более двух транзакций. Почти все ситуации взаимной блокировки (9758) можно устранить с помощью ()-блокировок, что и предусмотрено в 592 Часть 1К Управление транзакциями СУБД РВ2, но не в системе Бу|иеш К.
(В определении предполагается, что 13- блокировки совместимы с Б-блокировками, но не с другими Р-блокировками и, конечно, не с Х-блокировками. Более подробные сведения приводятся в !4.20!.) ° Уровень изоляции ПС (повторяемости считывания) более эффективен и безопасен, чем уровень СК (стабильности курсора). 15.9. Огау ХН., 1ог!е К.А., Рцгзо!и О.К. Огапц!агйу ог 1ос)гз |и а 1лкйе БЬаге|! Ра|а Вазе П Ргос.
! ж !и!егп. Сопб оп Че|у (дгйе Рага Вазез. — РгапипХЬаш, Ммз., БерэешЬег, ! 975. В статье впервые описана концепция блокировки намерения. Как объясняется в разделе ! 5.8, понятие "уровень детализации блокировок" относится к размеру блокируемых объектов. Поскольку разные транзакции, очевидно, имеют разные характеристики и требования, желательно, чтобы в системе существовал целый набор различных уровней детализации (что, в принципе, реализовано во многих системах).
В этой статье представлена методика воплощения нескольких уровней детализации блокировок на основе механизма блокировки намерения. Поскольку в данной главе было дано весьма упрощенное описание протокола блокировки намерения, ниже он будет рассмотрен несколько подробнее. Вопервых, стоит отметить, что блокируемыми объектами могут быть не только переменные-отношения и кортежи, как предполагалось прежде. Во-вторых, типы блокируемых объектов могут в общем случае не облапать строгой иерархической структурой. Присутствие индексов или других структур доступа будет лишь означать, что систему объектов следует рассматривать как ориентированный ацинлический граф.
Например, база данных поставщиков и товаров может содержать как хранимую переменную-отношение товаров Р, так и индекс, например ХР, построенный для атрибута $Р этой переменной-отношением. Для выборки кортежей переменной-отношения Р следует открыть всю базу данных, а затем либо перейти непосредственно к этому отношению и выполнить последовательный поиск, либо использовать индекс ХР для прямого перехода к искомым кортежам переменной-отношения Р. Таким образом, кортежи переменной- отношения Р в этом графе имеют два "родительских" объекта, Р и ХР, для каждого из которых "родительским" объектом является база данных.
Теперь формулировку этого протокола можно предспиппь в более обобщенной форме. ° При установке Х-блокировки для данного объекта для всех его дочерних обьектов неявным образом устанавливается Х-блокировка. ° При установке 5- или 51Х-блокировки для данного объекта для всех его дочерних объектов неявным образом устанавливается Б-блокировка. ° Прежде чем транзакция сможет потребовать установить 5- или !$-блокировку для заданного объекта, она должна установить !5-блокировку (или более сильную) по крайней мере для одного из его родительских обьектов. ° Прежде чем транзакция сможет потребовать установить Хъ !Х- или 5!Х- блокировку для заданного объекта, она должна установить 1Х-блокировку (или более сильную) для всех родительских обьектов этого объекта.
° Прежде чем транзакция получит право отменить блокировку данного объекта, она должна отменить все блокировки, установленные ею для дочерних объектов данного объекта. з лава 15. Параллельность 593 На практике использование этого протокола не сопровождается слишком большими накладными расходами, как это может показаться на первый взгляд, поскольку в любой заданный момент транзакция, весьма вероятно, уже будет обладать почти всеми необходимыми ей блокировками. Например, 1Х-блокировка для всей базы данных, вероятно, будет установлена непосредственно во время инициализации программы и эта блокировка будет сохраняться для всех транзакций, выполняемых на протяжении всей работы данной программы.
15.10.бгау 1.Н., ЬоПе К.А., Рцско!ц б.К., Тга!бег!.Ь. бгапп1агйу ог Ьос]сз апд Рейгеез оГ Сопымепсу сп а Вйагед Раса Вазе // Ргос. 1Р(Р ТС-2 Чс/ог]с!пй СопГ. оп Моде!!пй сп Раса Вазе Мапайешепс бузсегпз (ед. б. М. )чС!]язеп). — Ашзсегдаш, )ч)есЬег!апдж Ногсй-Но!!апд; !чесч Чогсс, )ч.'г'.: Е!зечсег Яс!епсе, 1976. В статье впервые введено понятие уровня изоляции (под названием степень непротиворечивости). 15.11.Нагдег Т., Койеппе! К.
Сопсцггепсу Сопсго! Ввоез ш Хезсед Тгапвасйопз // ТЬе Ч1.РВ )оцгпа!. — )апцагу, 1993. — 2, № 1. Как уже объяснялось в главе 14, несколькими различными авторами была предложена идея вложенных транзакций. В этой статье предлагается соответствующий набор протоколов блокировки для подобных транзакций. 15.12.)отдал ).К., Валет)ее 1., Васшап К.В. Ргесйюп Ьосйз 0 Ргос. 193! АСМ 51ОМОР шс. Сопб оп Мапаяешепс оГРаса. — Апп АгЬог, МссЬ., АрП1-Мау, 198!.
Точная блокировка является схемой блокировки на уровне кортежей, которая гарантирует блокировку только нужных кортежей (для достижения упорядочнваемости), включая фантомы. На самом деле эта форма блокировки называется блокировкой првдикатов [15.5]. Она основана на следующих действиях. Во-первых, на проверке запросов на обновление с целью выяснения, удовлетворяет ли вставляемый или удаляемый кортеж предыдущему запросу на выборку в некоторой параллельной транзакции. Во-вторых, на проверке запросов на выборку с целью выяснения, удовлетворяет лн вставляемый или удаляемый в некоторой параллельной транзакции кортеж данному запросу на выборку.
Эта схема не только элегантна, но и, как заявляют ее авторы, обладает более высокой производительностью, чем обычные методы (в которых блокируется чрезмерно много объектов). 15.13. Когй Н.Г., фреей!е б. Гоппа! Азресш о(Сопсцггепсу Сои!го! сп Ьопя-Рога!!оп Тгапзассюп Бузсешз С)з!пй йе !ч)Т/РЧ Моде! // АСМ ТОР5. — БерсешЬег, 1994. — 19, № 3. Как уже отмечалось в литературе (см., например, [14.3], [14.9], [14.15] и [14.16]), упорядочиваемость часто рассматривается как чрезмерно строгое требование, которое накладывается на некоторые виды систем обработки транзакций, особенно в новых прикладных областях, включающих взаимодействие с людьми, а значит, и транзакции большой длительности.
В данной статье представлена новая модель обработки транзакций ЬСТ/РЧ (песцед сгапзассюпз сч!сЬ ргейсасез апд ч!есчз), позволяющая решить эти проблемы. В статье также показано, что стандартная модель обработки транзакций с упорядочиванием является лишь частным случаем; после дается определение "новых и более полезных классов корректности". Здесь утверждается, что новая модель обеспечивает "необходимую основу для решения проблем, связанных с долговременными транзакциями*'. 594 Часть 1г'.