Обработка COMMIT

Сервер Oracle использует быстрый механизм фиксации, который гарантирует, что зафиксированные изменения могут быть восстановлены в случае отказа экземпляра.

Обработка COMMIT

Системный Номер Изменения

Всякий раз, когда транзакция фиксируется, сервер Oracle присваивает транзакции SCN фиксации.

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

Шаги в Обработке Фиксаций

Когда выполяется обработка COMMIT, происходят следующие шаги:

  1. Серверный процесс помещает запись фиксации, наряду с SCN, в буфер журнала транзакций.

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

  3. Пользователю сообщается, что COMMIT выполнен.

  4. Серверный процесс записывает информацию, чтобы указать, что транзакция выполнена и что блокировки ресурса могут быть освобождены.

Сбрасывание грязных буферов в файл данных выполняется независимо DBW0 и может произойти или до, или после фиксации.

Преимущества Быстрой Фиксации

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

  • Последовательные записи в файлы журнала быстрее, чем запись в различные блоки в файле данных.

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

  • Если несколько транзакций фиксируются одновременно, экземпляр осуществляет комбинирование нескольких записей журнала транзакций и пишет их за один раз.

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

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

Отметьте: Откат транзакции не инициирует запись LGWR на диск. Сервер Oracle всегда откатывает незафиксированные изменения при восстановлении после отказов. Если происходит отказ после отката, прежде, чем записи отката будут записаны на диск, отсутствие записи фиксации достаточно, чтобы гарантировать, что изменения, произведенные транзакцией, откатываются.

Далее: Непротиворечивость по Чтению

Смотрите также
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)