С.Д. Кузнецов - Основы баз данных (1121716), страница 90
Текст из файла (страница 90)
С точки зрения автора этого курса, в контексте баз данных эти два термина эквитзлентны. Единственным критерием согласованности данных является их удовлетворение ограничениям целостности, т. е. база данных находится в согласованном состоянии тогда и только тогда, когда она находится в целостном состоянии. ' Здесь мы опять сталкиваемся с терминологической трудностью, существующей у:ке много лет. В англоязычной терминологии имеется замечательный термин сонсипенг, который соответствует как реально параллельному, так и квазипараллельному выполнению транзакций (или процессов). Русский эквивалент одноврсиеннмй не совсем точно соопгетствует смыслу оригинала, нолучшего варианта пока нет. *' Правильнее было бы говорить ойХ-транзакции, но в этом курсе мы не обсуждаем другие модели транзакций н поэтому будем использовать термин «транзакция» в смысле 5йг: транзакция.
"' В русской терминологии для краткой характеристики этого действия часто используется не очень элегантный, но точно отражающий суть происходяшего термин олтат транзакции. 429 Основы бвз данных Курс (ассезз тоде) и размер области диагностики. При неявном образовании транзакции зти характеристики устанавливаются по умолчанию: транзакция получает максимальный уровень изоляции от одновременно выполняемых транзакций; режим доступа, позволяющий выполнять и операции выборки, и операции обновления базы данных; и назначаемый по умолчанию размер области диагностики.
Если значения характеристик транзакции, устанавливаемых по умолчанию, в некотором случае не являются пригодными, то до выполнения оператора, неявно инициируюшего транзакцию, можно явно установить характеристики данной транзакции с использованием оператора БЕТ теллБАст10н. Этот оператор определяется следующими синтаксическими правилами: БЕТ ТЕАИБАСТ10К тоде созхьа Твс есбе ::= Ево'агуоп 1еуе ассевв лют Жвдповс1св вузе Тво1ас.сп 1еуе1 ::= ЕЕАО '31хСОМ41ТЕЗ ЧЕАО ООИ1ТТЕО ЕЕРЕАТАЕЕЕ ЕЕАО БЕЕ1АЕ1ЕАЕ1 Е ассевв гоос1е ::= ЕЕАО ОИ У ЕЕАО ХЕ1ТЕ дуадповгусв вузе ::= 01АОКОБТ1С Б1ЕЕ уа1пе врес121сааьсп Операцию установки характеристик транзакции нельзя выполнять в контексте какой-либо активной транзакции. Выполнение операции допустимо только до образования первой транзакции $ЯЕ-сессии или между последовательно выполняемыми транзакциями втой сессии.
В одном операторе БЕТ ТЕАНБАСТ1ОН можно задать только по одному значению каждой из трех характеристик, но допускается последовательное выполнение нескольких таких операций с разными операндами. Как видно из синтаксических правил, у характеристики режим доступа может быть указано одно из двух значений — ееАО оеьу или ееАО ле1те. Если устанавливается режим Рейв океу, то в транзакции нельзя будет выполнять никакие операции, изменяющие базу данных, в том числе операции обновления таблиц и определения новых объектов базы данных.
Если режим доступа явно не указывается, по умолчанию принимается характеристика ЕЕАП КЕ1ТЕ, если только в качестве значения характеристики уровень изоляции не указывается ееАО ОЕООЕ1ттеО (в зтом случае устанавливается режим доступа ееАО Оиру). 430 Лекция 18 Авторизация доступа к данным, управление транзакциями и сессиями Если указывается размер области диагностики, то после ключевых СЛОВ ШАЯНОЯТтС Я ТЕЕ дОЛжЕН СЛЕДОВатЬ ЦЕЛОЧИСЛЕННЫЙ ЛИтЕРаЛ, ОПРЕдЕ- ляюший число диагностических элементов, которые должны разместиться в области диагностики (число исключительных ситуаций, предупреждений, сообшений об отсутствии данных и об успешном выполнении, которые будут вырабатываться при выполнении операторов внутри будущей транзакции).
Если размер области диагностики явно не указывается, то решение о размере этой области принимается в реализации*. Уровни изоляции будут подробно обсуждаться ниже, но здесь мы заметим, что если значение уровня изоляции явно не задано, то по умолчанию принимается уровень изоляции ЯЕВТАЫЕАВЬЕ. Кроме того, еше раз обратим внимание читателей, что одновременное задание уровня изоляции ВВАВ глчсоитттеп и режима доступа ВВАВ митте не допускается.
Еше одна интересная деталь оператора установки характеристик транзакции состоит в том, что выполнение каждого следующего оператора яет тВАьяйстзои полностью перекрывает эффект выполнения предыдущего такого оператора. В частности, если в предыдущем операторе явно задавалось значение некоторой характеристики, а в следуюШем это значение принимается по умолчанию, то именно значение по умолчанию будет являться значением характеристики транзакции. Явная инициация транзакции Для явного образования транзакции поддерживается оператор ЯТАВТ тяАняйст:он, определяемый следующими синтаксическими правилами: ЯТАВТ ТВАМЯАСТТОХ годе ооггаТТзг Этот оператор очень похож на ЯЕТ тВАКЯАСТТОК. Единственное (хотя и очень сушественное) отличие состоит в том, что выполнение оператора ятАВт тВАняйсттод приводит не только к установке характеристик транзакции, но и к реальной инициации транзакции.
Уровни изоляции 80Ь-транзакции В стандарте Я)ь:1999 уровни изоляции определяются на основе нескольких феноменов, которые могут возникать при выполнении транзакций**. * В этом курсе мы не будем более подробно обсуждать способы получения и обработки диагностических сообщений, поскольку это потребовало бы привлечения слишком большого числа технических деталей, не слишком существенных лля общего понимания языка. '" В действительности, этот подход был введен еше в проекте Яуяеш К.
431 Основы баз данных Курс Феномен «грязного» чтения (г1)гту геаб) Этому феномену подвержены транзакции, в которых допускается возможность видеть изменения объектов базы данных, производимые другими одновременно выполняемыми и еще не зафиксированными транзакциями. Простой пример феномена «грязного» *пения показан на рис. 18.4.
Рис. 18.4. Феномен «грязного» чтения На этом рисунке показано, что в момент времени сО были образованы две транзакции т1 и т2. В момент времени с1 транзакция т1 успешно выполняет операцию молификации некоторого объекта базы данных О. В момент времени г2 ~ с2>с1) транзакция т2 читает объект о, после чего успешно завершается в момент времени сЗ. Транзакция же т1 завершается в момент времени с4 (с4>сЗ), причем в ней выполняется оператор лоььвлСк, что приводит к ликвцдации в базе ланных последствий изменения объекта о. В результате оказывается, что в транзакции т2 обрабатывались данные, которые реально не существуют в базе данных (отсюда и термин «грязные» данине).
В 8()) феномен «грязного» чтения может наблюдаться у транзакций, выполняемых на уровне изоляции ЛКЛП ПИСОИМ1ттКП. Рекомендуется использовать этот уровень изоляции только в тех транзакциях, для выполнения функций которых точные данные не обязательны (например, в транзакциях, производящих статистическую обработку). Лекция 18 Авторизация доступа к данным, управление транзакциями и сессиями Феномен непоаторяемого чтения (ипгереагаЫе ген) Этому феномену подвержены транзакции, читающие некоторые объекты базы данных и допускающие изменения уже прочитанных объектов другими транзакциями.
Пример феномена неповторяемого чтения показан на рис. 18.5. Рис. 18.5. Феномен неповторяемого чтения На этом рисунке показано, что в момент времени с О были образованы две транзакции Т1 и Т2. В момент времени с1 транзакция Т2 выполняет операцию чтения некоторого объекта базы данных о (например, производит выборку строки из таблицы с указанием значения первичного ключа). В момент времени с2 ( с2>с1) транзакция т1 изменяет объект О (модифицирует или даже удаляет).
В момент времени сз 1сз>с21 транзакция т2 повторно счить1вает объект о и обнаруживает, что он изменился или вовсе отсутствует, Другими словами, в транзакции Т2 повторное выполнение выборки объекта базы данных о дало результат, отличный от результата первого выполнения (отсюда и происходит термин «неповторлемое чтение»). В Я.11. феномен неповторяемого чтения может наблюдаться у транзакций, выполняемых на уровне изоляции акал сОимтттнт (этот уровень изоляции, как показывает его название, гарантирует отсутствие феномена «грязного» чтения).
Основы баз данных Курс Феномен фантомов Этому феномену подвержены транзакции, производящие выборку строк и таблиц базы данных и допускающие добавление к данным таблицам другими транзакциями строк, которые удовлетворяют условию выборки. Пример феномена фантомов показан на рис.
! З.б. Рнс. 18.6. Феномен фантомов На этом рисунке показано, что в момент времени г О были образованы две транзакции, тг и т2. В момент времени г3 транзакция т2 выполняет операцию выборки строк из таблицы к по условию с. В момент времени с2 ! с2> г 3 ! транзакция т1 выполняет над таблицей я операцию обновления !вставки или модификации строк), в результате которой в таблице к появляются дополнительные строки, удовлетворяющие условию с. В момент времени г3 ! с3>с2) транзакция т2 повторно выполняетоперацию выборки строк из таблицы я по условию с и обнаруживает наличие в результате дополнительных фантомиых строк. В ЬЯ) феномен фантомов может наблюдаться у транзакций, выполняемых на уровне изоляции ккрклтлвьк кклп (этот уровень изоляции, как показывает его название, гарантирует отсутствие феномена неповторяемого чтения).