КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Коллективный доступ к данным. Проблемы коллективного доступа. Понятие блокирования или захвата.Если рассматривать транзакцию как упорядоченное множество элементарных операций, то при параллельном выполнении транзакций их операции, скорее всего, будут выполняться вперемешку. Операции каждой транзакции упорядочены по времени (первая операция не может быть выполнена позже второй или третьей, а вторая операция не может быть выполнена позже третьей). Уровни изоляции (описаны в порядке увеличения изоляции транзакций, надёжности работы с данными): 0 — Неподтверждённое чтение (Read Uncommited) - чтение незафиксированных изменений своей транзакции и конкурирующих транзакций, 1 — Подтверждённое чтение (Read Commited) — чтение всех изменений своей транзакции и зафиксированных изменений конкурирующих транзакций, 2 — Повторяемое чтение (Repeatable Read ,Snapshot) — чтение всех изменений своей транзакции, любые изменения, внесённые конкурирующими транзакциями после начала своей недоступны, 3 — Упорядоченный — (Serializable, сериализуемый) — . Идентичен ситуации, при которой транзакции выполняются строго последовательно одна после другой. Чем выше уровень изоляции, тем больше требуется ресурсов, чтобы их поддерживать. Зависимости: 1)ЧТЕНИЕ-ЧТЕНИЕ как таковой не существует, так как обе транзакции читают одну и ту же версию объекта и не создают взаимозависимостей. 2) ЧТЕНИЕ-ЗАПИСЬ (T1 считывает прежде, чем T2 его обновила). 3) ЗАПИСЬ-ЧТЕНИЕ, т.е. T2 обновляет O прежде, чем T1 его считала. 4) ЗАПИСЬ – ЗАПИСЬ, т.е. T1 обновляет O прежде, чем T2 его обновила. Техника блокированияоснована на том, что каждая операция чтения или записи предваряется запросом блокировки, вследствие чего блокировка будет наложена и тем самым будет разрешен доступ к объекту данных, либо же блокировка будет запрещена и, следовательно, будет запрещен доступ к объекту данных. Блокировки могут быть совместными (две разные транзакции могут наложить одновременно блокировку такого вида на один и тот же объект данных) или несовместными (если объект уже блокирован, то наложение второй блокировки запрещается). Фактически, перед операцией выполняется захват объекта. Когда транзакция фиксируется, все блокировки снимаются, т. е. объекты данных освобождаются. Совместность блокировок регулируется следующей матрицей: если для обеспечения изолированности транзакций используются блокировки, то система поддерживает пять операций над объектами данных (READ, WRITE, XLOCK, SLOCK, UNLOCK), а также три основных операции над транзакциями (BEGIN, COMMIT, ROLLBACK). READ и WRITE (ЧТЕНИЕ и ЗАПИСЬ) имеют обычное значение: READ возвращает значение именованного объекта в прикладную задачу, WRITE изменяет значение именованного объекта данных. Операция SLOCK предшествует операции чтения транзакции, XLOCK — операции записи. «S» в названии SLOCK означает разделяемую блокировку (Share lock): только операции чтения могут параллельно получать доступ к заблокированному объекту данных без нарушения изолированности. «X» в XLOCK означает эксклюзивную блокировку (eXclusive lock): эта операция может предшествовать как операции чтения, так и операции записи транзакции и исключает чтение и запись объекта данных другими транзакциями. Операция UNLOCK снимает блокировку. Операция BEGIN означает начало транзакции. Операция COMMIT просто снимает блокировки (все изменения транзакции сохраняются). Операция ROLLBACK должна сначала откатить все изменения транзакции, а потом снять все блокировки. Проблема взаимного блокирования двух транзакций, когда каждая из транзакций ждет освобождения объектов, блокированных другой транзакцией (такую ситуацию называют deadlock - "тупиковая ситуация"); она решается путем принудительного отката одной из транзакций-участников тупика, соответственно хранилище блокировок периодически сканируется на наличие тупика, что также требует определенных ресурсов.
|