LGWR — запись журнала

dbstalker, 20 декабря

Сервер Oracle для переноса пакетов записей о транзакциях из буфера журнала повторного выполнения на диск использует выделенный процесс обязательный для нормального функционирования БД Oracle, называемый писателем журнальных файлов (redo log writer, LGWR).

Процесс LGWR запись на диск совершает если:

  • Истекает время ожидания для процесса LGWR(обычно три секунды);
  • при фиксации транзакции;
  • при заполнении буфера журнала повторного выполнения на треть (этим можна управлять с помощью недокументированного параметра инициализации _log_io_size.См. здесь и здесь)
  • Когда его просит DBWR. До того, как DBWR запишет "грязный" блок на диск, все redo записи, связанные с изменениями в этом блоке должны быть записаны. Если DBWR обнаруживает такие не сброшенные записи, он оповещает LGWR и ждет завершения его работы

Создание слишком большого буфера журнала повторного выполнения не имеет смысла: сервер Oracle никогда не сможет использовать его целиком.

Запись в журналы происходит последовательно, а не вразброс, как вынужден выполнять ввод-вывод процесс DBWn. Запись большими пакетами , как делает это LGWR, намного эффективнее, чем запись множества отдельных блоков в разные части файла, как делает это DBWn. Это одна из главных причин выделения процесса LGWR и журнала повторного выполнения. Эффективность последовательной записи измененных блоков перевешивает расход ресурсов на дополнительный ввод-вывод.

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

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

Выделенный фоновый процесс для последовательного упорядочивания и пакетной записи векторов изменений на диск — это фактор высокой производительности сервера Oracle.

Производительность процесса LGWR является критической для скорости работы OLTP-систем и процедур загрузки данных, которые не используют возможность работы в режиме «без восстановления» (unrecoverable).

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

 

Новый комментарий

Я не спамер: введите суму 1+1



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум

Последние темы:

Печь булерьян в дом
21 сентября, 1 ответа
Как Открыть Футбольную Школу
20 сентября, 1 ответа
IP телефония
20 сентября, 1 ответа