Параллелизм в Oracle - многоверсионное управление

База данных Oracle Database может использовать один или более методов параллелизма. Сюда входят механизмы блокировки для гарантии монопольного использования таблицы одной транзакцией, методы временных меток, которые разрешают сериализацию транзакций и планирование транзакций на основе проверки достоверности. Методы блокировки называют пессимистическими, потому что они предполагают, что транзакции нарушат сериализуемые расписания, если этого не предотвратить специально. Методы временных меток и проверки достоверности, с другой стороны, называются оптимистическими, потому что они не предполагают обязательного нарушения сериализуемых расписаний транзакциями.

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

Методы временных меток присваивают временную метку каждой транзакции и навязывают сериализуемость, обеспечивая соответствие этих меток расписанию транзакций. Методы проверки достоверности поддерживают запись действий транзакции. Прежде чем зафиксировать транзакцию Oracle, база данных проверяет все изменения по измененным элементам всех текущих активных транзакций для исключения всех несериализованных расписаний.

Oracle использует комбинацию доступных методов. Он применяет блокировки наряду с тем, что называется многоверсионным управлением параллельным доступом (вариация метода временных меток), для управления параллелизмом.

Oracle предварительно блокирует деструктивное взаимодействие между транзакциями, которые пытаются обратиться к одному и тому же ресурсу. Ресурсом может быть прикладная таблица или строка, либо же разделяемая структура данных в памяти. Это также может быть таблица или строка таблицы словаря данных. Блокировки гарантируют согласованность данных, обеспечивая при этом параллельный доступ к данным за счет разрешения многим пользователям одновременно обращаться к базе данных.

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

Многоверсионное управление параллельным доступом Oracle представляет собой вариацию подхода к управлению параллелизмом на основе временных меток; оно поддерживает старые версии данных таблицы, чтобы гарантировать возможность для любой транзакции читать исходные данные даже после их изменения другими транзакциями.В отличие от блокировки, здесь не нужно никакого ожидания; транзакции используют разные версии одной и той же таблицы вместо ожидания завершения других транзакций. Когда транзакция хочет обновить строку, Oracle сначала пишет исходный образ данных “до того” в табличное пространство отмены. Запросы, имеющие согласованное представление данных, что обеспечивает согласованность чтения, видят данные только по состоянию на один момент времени. Используя тот же механизм, Oracle также может обеспечить согласованность чтения на уровне транзакции, в том смысле, что все отдельные операторы транзакции увидят данные по состоянию на один и тот же момент времени. Многоверсионное управление параллельным доступом, используемое Oracle, позволяет обойтись менее строгим режимом изоляции READ COMMITTED вместо применения медленного и более безопасного режима уровня изоляции SERIALIZABLE.

Вас заинтересует / Intresting for you:

Базы данных Oracle: что нужно ...
Базы данных Oracle: что нужно ... 64880 просмотров Ирина Светлова Thu, 24 Jun 2021, 20:01:45
Oracle Personal Edition
Oracle Personal Edition 5963 просмотров Надин Tue, 21 Nov 2017, 13:32:12
Oracle изменения изменений!
Oracle изменения изменений! 3104 просмотров Stas Belkov Tue, 21 Nov 2017, 13:18:46
Основные функций СУБД Oracle (...
Основные функций СУБД Oracle (... 3919 просмотров Stas Belkov Tue, 21 Nov 2017, 13:19:55
Войдите чтобы комментировать