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

3.
МНОГОВЕРСИОННОСТЬ ДАННЫХ И УПРАВЛЕНИЕ ПАРАЛЛЕЛЬНЫМИ ТРАНЗАКЦИЯМИ ЗЛ Транзакции и параллелизм Современные СУБД являются многопользовательскими системами, т.е.
допускают параллельную одновременную работу большого количества пользователей.
При этом пользователи не должны мешать друг другу.
Т.к.
логической единицей работы для пользователя является транзакция, то работа СУБД должна быть организована так, чтобы у пользователя складывалось впечатление, что их транзакции выполняются независимо от транзакций других пользователей
[17].
Простейший и очевидный способ обеспечить такую иллюзию у пользователя состоит в том, чтобы все поступающие транзакции выстраивать в единую очередь и выполнять строго по очереди.
Такой способ не годится по очевидным причинам теряется преимущество параллельной работы.
Таким образом, транзакции необходимо выполнять одновременно, но так, чтобы результат был бы
такой же, как если бы транзакции выполнялись по очереди.
Трудность состоит в том, что если не предпринимать никаких специальных мер, то данные, измененные одним пользователем, могут быть изменены транзакцией другого пользователя раньше, чем закончится транзакция первого пользователя.
В результате, в конце транзакции первый пользователь увидит не результаты своей работы, а неизвестно что.

Как отмечалось в предыдущей главе, транзакция рассматривается как последовательность элементарных атомарных операций.
Атомарность отдельной элементарной операции состоит в том, что СУБД гарантирует, что, с точки зрения пользователя, будут выполнены два условия: 1.
Эта операция будет выполнена целиком или не выполнена вовсе (атомарность все или ничего).
[стр. 150]

 По способам реализации.
 По времени проверки.
 По области действия.
По способам реализации различают:  Декларативную поддержку ограничений целостности средствами языка определения данных (DDL).
 Процедурную поддержку ограничений целостности посредством триггеров и хранимых процедур.
По времени проверки ограничения делятся на:  Немедленно проверяемые ограничения.
 Ограничения с отложенной проверкой.
По области действия ограничения делятся на:  Ограничения домена.
 Ограничения атрибута.
 Ограничения кортежа.
 Ограничения отношения.
 Ограничения базы данных.
Стандарт языка SQL поддерживает только декларативные ограничения целостности, реализуемые как:  Ограничения домена.
 Ограничения, входящие в определение таблицы.
 Ограничения, хранящиеся в базе данных в виде независимых утверждений (assertion).
Проверка ограничений допускается как после выполнения каждого оператора, могущего нарушить ограничение, так и в конце транзакции.
Во время выполнения транзакции можно изменить режим проверки ограничения.
Глава 10.
Транзакции и параллелизм В данной главе изучаются возможности параллельного выполнения транзакций несколькими пользователями, т.е.
свойство (И) изолированность транзакций.
Современные СУБД являются многопользовательскими системами, т.е.
допускают параллельную одновременную работу большого количества пользователей.
При этом пользователи не должны мешать друг другу.
Т.к.
логической единицей работы для пользователя является транзакция, то работа СУБД должна быть организована так, чтобы у пользователя складывалось впечатление, что их транзакции выполняются независимо от транзакций других пользователей.

Простейший и очевидный способ обеспечить такую иллюзию у пользователя состоит в том, чтобы все поступающие транзакции выстраивать в единую очередь и выполнять строго по очереди.
Такой способ не годится по очевидным причинам теряется преимущество параллельной работы.
Таким образом, транзакции необходимо выполнять одновременно, но так, чтобы результат был бы


[стр.,151]

такой же, как если бы транзакции выполнялись по очереди.
Трудность состоит в том, что если не предпринимать никаких специальных мер, то данные измененные одним пользователем могут быть изменены транзакцией другого пользователя раньше, чем закончится транзакция первого пользователя.
В результате, в конце транзакции первый пользователь увидит не результаты своей работы, а неизвестно что.

Одним из способов (не единственным) обеспечить независимую параллельную работу нескольких транзакций является метод блокировок.
Работа транзакций в смеси Транзакция рассматривается как последовательность элементарных атомарных операций.
Атомарность отдельной элементарной операции состоит в том, что СУБД гарантирует, что, с точки зрения пользователя, будут выполнены два условия: 1.
Эта операция будет выполнена целиком или не выполнена вовсе (атомарность все или ничего).

2.
Во время выполнения этой операции не выполняются никакие другие операции других транзакций (строгая очередность элементарных операций).
Например, элементарными операциями транзакции будут считывание страницы данных с диска или запись страницы данных на диск (страница данных это минимальная единица для дисковых операций СУБД).
Условие 2 на самом деле является именно логическим условием, т.к.
реально система может выполнять несколько различных элементарных операций в один и тот же момент.
Например, данные могут храниться на нескольких физически различных дисках и операции чтения-записи на эти диски могут выполняться одновременно.
Элементарные операции различных транзакций могут выполняться в произвольной очередности (конечно, внутри каждой транзакции последовательность элементарных операций этой транзакции является строго определенной).
Например, если есть несколько транзакций, состоящих из последовательности операций элементарных: , , то реальная последовательность, в которой СУБД выполняет эти транзакции может быть, например, такой: .
Определение 1.
Набор из нескольких транзакций, элементарные операции которых чередуются друг с другом, называется смесью транзакций.
Определение 2.
Последовательность, в которой выполняются элементарные операции заданного набора транзакций, называется графиком запуска набора транзакций.
Замечание.
Очевидно, что для заданного набора транзакций может быть несколько (вообще говоря, достаточно много) различных графиков запуска.

[Back]