собирает пакет блоков для записи
собирает пакет блоков для записи и передает его операционной системе. Процесс
DBWn не ждет, пока ОС запишет блоки, — он собирает следующий пакет для записи. Завершив асинхронную запись, ОС уведомляет об этом процесс
DBWn. Это позволяет процессу
DBWn работать намного быстрее, чем при последовательном выполнении действий. В разделе "Подчиненные процессы" будет показано, как с помощью подчиненных процессов ввода-вывода можно эмулировать асинхронный ввод-вывод на платформах, где он не поддерживается.
И последнее замечание о процессе
DBWn. Он, по определению, записывает блоки, разбросанные по всему диску, — процесс
DBWn выполняет множество записей вразброс. В случае изменений будут изменяться разбросанные блоки индекса и блоки данных, достаточно случайно распределенные по диску. Процесс
LGWR, напротив, выполняет в основном запись последовательных блоков в журнал повторного выполнения. Это — важное отличие и одна из причин, почему сервер Oracle имеет журнал повторного выполнения и отдельный процесс
LGWR. Записи вразброс выполняются намного медленнее, чем последовательные записи. Имея грязные блоки в буферном кеше в SGA и процесс
LGWR, записывающий большое количество последовательных блоков информации для восстановления измененных буферов, можно повысить производительность. Сочетание работы двух процессов — процесс
DBWn медленно работает в фоновом режиме, тогда как процесс
LGWR
быстро выполняет работу для ожидающего пользователя — позволяет повысить общую производительность. Это верно даже несмотря на то, что сервер Oracle может выполнять больший объем ввода-вывода, чем надо (записывает в журнал и в файл данных), — записи в оперативный журнал повторного выполнения можно пропустить, если в ходе обработки контрольной точки сервер Oracle уже записал измененные блоки на диск.
Содержание Назад Вперед