русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Блокировки, транзакции, уровни изолирования


Дата добавления: 2015-07-09; просмотров: 1270; Нарушение авторских прав


Блокировка: механизм, используемый для одновременного доступа к общему ресурсу.

Блокировка:в разных СУБД, реализована по-разному.

Уровень блокировки: строка, таблица, блок (страница), схема, база данных, ...

Потерянные изменения:

- П1: выбирает строку;

- П2: вбирает ту же строку;

- П1: изменяет строку и фиксирует;

- П2: изменяет строку и фиксирует.

- П1: выбирает строку и не видит своего изменения.

Методы блокирования: пессимистическое, оптимистическое.

Оптимистическое блокирование:

Блокирование: INSERT, UPDATE, DELETE, SELECT FOR UPDATE [NOWAIT].

Блокирование INSERT: только если два пользователя одновременно добавляют строку с одинаковым PRIMARY KEY/UNIQUE ключом.

Блокирование UPDATE/DELETE:другой пользователь не зафиксировал (COMMIT) UPDATE/DELETE или выдал SELECT FOR UPDATE.

Взаимные блокировки:deadlock.

Эскалация блокировок:некоторые СУБД увеличивают уровень блокировки при многих малых. Oracle не выполняет эскалацию, но делает преобразование. Oracle: при выборе SELECT FOR UPDATE создаются две блокировки: EXCLUSIVE(эксклюзивная) на строку и ROW SHARE TABLE(разделяемая на таблицу).

Типы блокировок Oracle:DML-locks, DDL-locks, internal locks, distributed locks, parallel cache management locks.

Блокировки DML: TX-блокировки: начинаются с момента INSERT/UPDATE/DELETE/SELECT FOR UPDATE и заканчивается COMMIT/ROLLBACK. Хранится как атрибут данных (структура блока, слоты для транзакций, INITRANS=l/2 таблица/индекс, MAXTRANS<=255, 24 байта, позволяет избежать динамического выделения).

Информация о текущих блокировках: V$TRANSACTION, V$SESSION, V$LOCK

XIDUSN, XIDSLOT, XIDSQN – идентификатор транзакции.

Блокировки DML: TM-блокировки очередности: устанавливается при DML-изменении, чтобы предотвратить DDL-изменения (ORA-00055).

Блокировки DDL:выполнение DDL всегда начитается с фиксации (COMMIT) транзакции, даже если сам DDL-оператор выполнен неудачно.



Защелки и блокировки с очередями:средства организации очередей к разделяемым ресурсам, защелка – очень непродолжительная блокировка (для защиты буферного кэша, библиотечного кэша); блокировки с очередями – медленнее защелок, но обеспечивает большие функциональные возможности.

Блокировка вручную: SELECT FOR UPDATE, LOCK TABLE IN EXCLUSIVE MODE – блокировка таблицы (не отменяет блокировку строк), используется при пакетном изменении данных, DBMS_LOCK(в основном для синхронизации работы с внешним ресурсом).

Уровни изолированности: READ UNCOMMITED, READ COMMITTED, REPETABLE READ, SERIALIZIBLE.

Oracle явно поддерживает:READ COMMITTED и SERIALIZIBLE.

SET TRANSACTION READ ONLY|WRITE: READ ONLY– для получения согласованного чтения (перечень и сумма).

SET TRANSACTION ISOLATION LEVEL = {READ COMMITTED, SERIALIZIBLE}

ALTER SESSION SET ISOLATION_LEVEL = {READ COMMITTED, SERIALIZIBLE}

SERIALIZABLE:иллюзия что пользователи работают с таблицами последовательно.

Транзакции, ACID, одновременный доступ, блокировки, уровни изоляции.

В Oracle нет оператора Начать транзакцию. Транзакция начинается неявно с INSERT, UPDATE, DELETE, SELECT FOR UPDATE.

Транзакция должна завершаться явно: COMMIT/ROLLBACK.

В триггере COMMIT/ROLLBACK в общем случае нельзя.

SAVEPOINT, ROLLBACK TO

SET TRANSACTION:уровни изолированности, только чтение.

Распределенные транзакции:DBLINK, двухфазная фиксация, 2PC-распределенный протокол, позволяющий фиксировать данные в нескольких базах данных.Координатор распределенной транзакции (одна из баз), COMMIT/ROLLBACK FORCE.

Автономные транзакции: в анонимных блоках, в процедурах и функциях, в методах объектных типов, триггерах. Нельзя использовать SAVEPOINT. Нельзя использовать в распределенных транзакциях. Таблицы TEMPORARY TABLE уровня транзакции можно использовать только в транзакции верхнего уровня.



<== предыдущая лекция | следующая лекция ==>
Большие типы: CLOB, BLOB, BFILE, назначение, создание и применение. | Табличные функции (table function)


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.