Проверяемый текст
Пушников А.Ю. Введение в системы управления базами данных. Учебное пособие/Изд-е Башкирского ун-та. - Уфа, 1999.
[стр. 40]

Предикат CHECK, входящий в определение утверждения, может быть достаточно сложным и содержать ссылки на несколько таблиц.
Пример
3.
CREATE ASSERTION CheckJPay CHECK (Salespeaple.Salary IS NOT NULL) OR (SalespeapIe.Commission IS NOT NULL) DEFERRABLE INITIALLY IMMEDIATE DROP ASSERTION Имя утверждения Этот оператор позволяет удалять имеющееся утверждение.
COMMIT WORK Этот оператор фиксирует транзакцию.
При этом проверяются все отложенные до конца транзакции ограничения.
Если одно из ограничений не выполняется, то транзакция откатывается.
SET CONSTRAINT {Имя ограничения.,..
ALL) {DEFERRED IMMEDIATE} Этот оператор позволяет во время выполнения транзакции менять момент проверки всех (ALL) или некоторых ограничений.
Этот оператор действует только на ограничения, определенные как DEFERRABLE (потенциально откладываемые).
Если ограничение
А находилось в состоянии IMMEDIATE (немедленно проверяемое), то оператор SET CONSTRAINT А DEFERRED переводит его в состояние DEFERRED (с отложенной проверкой) и тогда все операции, потенциально могущие нарушить это ограничение, будут выполняться без проверки.
Проверка будет произведена в конце транзакции или в момент подачи команды SET CONSTRAINT
А IMMEDIATE.
1.2.
Транзакции и восстановление данных Главное требование долговечности данных транзакций состоит в том, что данные зафиксированных транзакций должны сохраняться в системе, даже если в следующий момент произойдет сбой системы [27, 28].
Казалось 40
[стр. 149]

Этот оператор позволяет создавать утверждения т.е.
ограничения, не являющиеся частью определения домена, колонки или таблицы.
Предикат CHECK, входящий в определение утверждения, может быть достаточно сложным и содержать ссылки на несколько таблиц.
Пример
20.
CREATE ASSERTION Check_Pay CHECK (Salespeaple.Salary IS NOT NULL) OR (Salespeaple.Commission IS NOT NULL) DEFERRABLE INITIALLY IMMEDIATE DROP ASSERTION Имя утверждения Этот оператор позволяет удалять имеющееся утверждение.
COMMIT WORK Этот оператор фиксирует транзакцию.
При этом проверяются все отложенные до конца транзакции ограничения.
Если одно из ограничений не выполняется, то транзакция откатывается.
SET CONSTRAINT {Имя ограничения.,..
ALL} {DEFERRED IMMEDIATE} Этот оператор позволяет во время выполнения транзакции менять момент проверки всех (ALL) или некоторых ограничений.
Этот оператор действует только на ограничения, определенные как DEFERRABLE (потенциально откладываемые).
Если ограничение
A находилось в состоянии IMMEDIATE (немедленно проверяемое), то оператор SET CONSTRAINT A DEFERRED переводит его в состояние DEFERRED (с отложенной проверкой) и тогда все операции, потенциально могущие нарушить это ограничение, будут выполняться без проверки.
Проверка будет произведена в конце транзакции или в момент подачи команды SET CONSTRAINT
A IMMEDIATE.
Выводы Транзакция это неделимая, с точки зрения воздействия на СУБД, последовательность операций манипулирования данными, выполняющаяся по принципу "все или ничего", и переводящая базу данных из одного целостного состояния в другое целостное состояние.
Транзакция обладает четырьмя важными свойствами, известными как свойства АСИД:  (А) Атомарность.
 (С) Согласованность.
 (И) Изоляция.
 (Д) Долговечность.
База данных находится в согласованном состоянии, если для этого состояния выполнены все ограничения целостности.
Ограничение целостности это некоторое утверждение, которое может быть истинным или ложным в зависимости от состояния базы данных.
Ограничения целостности классифицируются несколькими способами:

[стр.,173]

Если все транзакции в смеси подчиняются протоколу доступа к данным, то проблемы параллелизма решаются (почти все, кроме "фантомов"), но появляются тупики.
Состояние тупика (dead locks) характеризуется тем, что две или более транзакции пытаются заблокировать одни и те же объекты, и бесконечно долго ожидают друг друга.
Для разрушения тупиков система периодически или постоянно поддерживает графа ожидания транзакций.
Наличие циклов в графе ожидания свидетельствует о возникновении тупика.
Для разрушения тупика одна из транзакций (наиболее дешевая с точки зрения системы) выбирается в качестве жертвы и откатывается.
Для решения проблемы "фантомов", а также для уменьшения накладных расходов, вызываемых большим количеством блокировок, применяются более сложные методы.
Одним из таких методов являются преднамеренные блокировки, блокирующие объекты разной величины строки, страницы, таблицы, файлы и др.
Альтернативным является метод предикатных блокировок Имеются также методы сериализации, не использующие блокировки.
Это метод временных меток и механизм выделения версий.
Механизм выделения версий удобен тем, что он позволяет одновременно, и читать, и изменять одни и те же данные разными транзакциями.
Это увеличивает степень параллельности, и общую производительность системы.
Стандарт SQL не предусматривает понятие блокировок.
Вместо этого вводится понятие уровней изоляции.
Стандарт предусматривает 4 уровня изоляции:  READ UNCOMMITTED уровень незавершенного считывания.
 READ COMMITTED уровень завершенного считывания.
 REPEATABLE READ уровень повторяемого считывания.
 SERIALIZABLE уровень способности к упорядочению.
Транзакции могут запускаться с различными уровнями изоляции.
Глава 11.
Транзакции и восстановление данных В данной главе изучаются возможности восстановления данных после сбоев системы, т.е.
свойство (Д) долговечность транзакций.
Главное требование долговечности данных транзакций состоит в том, что данные зафиксированных транзакций должны сохраняться в системе, даже если в следующий момент произойдет сбой системы.

Казалось бы, самый простой способ обеспечить такую гарантию это во время каждой операции сразу записывать все изменения на дисковые носители.
Такой способ не является удовлетворительным, т.к.
имеется существенное различие в скорости работы с оперативной и с внешней памятью.
Единственный способ достичь приемлемой скорости работы состоит в буферизации страниц базы данных в оперативной памяти.
Это означает, что данные попадают во внешнюю долговременную память не сразу после внесения изменений, а через некоторое (достаточно большое) время.
Тем не менее, что-что во внешней памяти должно оставаться, т.к.
иначе неоткуда получить информацию для восстановления.


[стр.,178]

результате сбоя, т.к.
изменения, внесенными этими транзакциями, отсутствуют после восстановления базы данных из резервной копии.
Наиболее плохим случаем является ситуация, когда разрушены физически и база данных, и журнал транзакций.
В этом случае единственное, что можно сделать это восстановить состояние базы данных на момент последнего резервного копирования.
Для того чтобы не допустить возникновение такой ситуации, базу данных и журнал транзакций обычно располагают на физически разных дисках, управляемых физически разными контроллерами.
Восстановление данных и стандарт SQL Стандарт языка SQL не содержит требований к восстановимости данных, оставляя эти вопросы на усмотрение разработчиков СУБД.
Выводы Главное требование долговечности данных транзакций состоит в том, что данные зафиксированных транзакций должны сохраняться в системе, даже если в следующий момент произойдет сбой системы.
Избыточность хранения данных, позволяющую восстановить систему после сбоя обычно обеспечивает журнал транзакций.
Восстановление базы данных может производиться в следующих случаях:  Индивидуальный откат транзакции.
 Мягкий сбой системы (аварийный отказ программного обеспечения).
 Жесткий сбой системы (аварийный отказ аппаратуры).
Страницы базы данных и журнала транзакций не записываются сразу на диск, а предварительно буферизируются в оперативной памяти.
Страницы базы данных, содержимое которых в буфере отличается от содержимого на диске, называются "грязными" (dirty) страницами.
Запись "грязных" страниц из буфера на диск называется выталкиванием страниц во внешнюю память.
Основным принципом согласованной политики выталкивания буфера журнала и буферов страниц базы данных является протокол журнализации Write Ahead Log (WAL) "пиши сначала в журнал".
Минимальным требованием, гарантирующим возможность восстановления последнего согласованного состояния базы данных, является выталкивание при фиксации транзакции во внешнюю память журнала всех записей об изменении базы данных этой транзакцией.
Индивидуальный откат транзакции выполняется при помощи журнала транзакций.
Восстановление системы после мягкого сбоя осуществляется как часть процедуры перезагрузки системы.
При перезагрузке системы транзакции проходят процедуру идентификации для выявления завершившихся и прерванных в результате сбоя транзакций.
Транзакции, успешно завершившиеся до наступления сбоя, и данные о которых отсутствуют в базе данных, повторяются заново.
Транзакции, не успевшие завершиться к моменту сбоя, и данные о которых имеются в базе данных, откатываются.
Восстановление системы после жесткого сбоя выполняется при помощи архивной копии базы данных и журнала транзакций.

[Back]