Показать сообщение отдельно
  #9  
Старый 26.09.2009, 23:29
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Сравнение прямой и обычной загрузки



Сравнение прямой и обычной загрузки


Способ сохранения данных

В обычном режиме загрузки (conventional path loads) для сохранения данных используется обработка SQL и фиксация транзакций в базе данных. За вставкой массивов записей следует операция фиксации транзакции. Каждая загрузка данных может включать несколько транзакций.

Для записи блоков данных в файлы данных Oracle при загрузке в прямом режиме (direct path load) используется сохранение данных. Поэтому прямой режим загрузки быстрее обычного.

Отличие сохранения данных от фиксации транзакции состоит в следующем:

во время сохранения данных в базу данных записываются только полные блоки данных;
они записываются выше верхней границы таблицы (отметки максимального заполнения, high-water mark, HWM);
после сохранения данных эта отметка перемещается;
после сохранения данных внутренние ресурсы не освобождаются;
сохранение данных не завершает транзакцию;
индексы не обновляются при каждом сохранении данных.


Примечание: прямая загрузка (direct path load) и параллельная прямая загрузка (parallel direct path load) очень похожи в части операций DML, поэтому они отдельно не выделяются в этом сравнении.


Журнализация изменений
Обычная загрузка данных генерирует журнальные записи, как любой оператор DML.

При прямой загрузке журнальные записи не генерируются, если:

база данных находится в режиме NOARCHIVELOG;
база данных находится в режиме ARCHIVELOG, однако журнализация отключена (журнализация отключается при установке для таблицы атрибута N0LOGGING или при использовании в управляющем файле фразы UNRECOVERABLE).


Обеспечение выполнения ограничений
Во время загрузки в обычном режиме обеспечивается выполнение всех включенных ограничений, как в любой операции DML.

Во время загрузки в прямом режиме ограничения обрабатываются следующим образом:

Ограничения NOT NULL проверяются во время построения массивов.
Ограничения FOREIGN KEY и CHECK отключаются и могут быть включены в конце процесса загрузки путем использования соответствующих команд в управляющем файле. Ограничения FOREIGN KEY отключаются, потому что они ссылаются на другие строки или таблицы, а ограничения CHECK - потому что могут использовать функции SQL. Если в большую таблицу вставляется небольшое число строк, используйте обычный режим загрузки.
Ограничения PRIMARY KEY и UNIQUE проверяются во время и в конце загрузки, и в случае нарушения их можно отключить.


Срабатывание триггеров INSERT
При обычной загрузке триггеры INSERT срабатывают, а при прямой загрузке они отключаются перед выполнением и снова включаются в конце выполнения. В случае, когда в конце выполнения ссылочный объект недоступен, эти триггеры могут остаться отключенными. Для загрузки данных в таблицы с включенными триггерами INSERT рекомендуется использовать обычный режим.


Загрузка в кластеризованные таблицы
Прямой режим не может использоваться для загрузки данных в кластеризованные таблицы. Данные в кластеризованные таблицы загружаются только в обычном режиме.


Блокирование
Во время выполнения загрузки в прямом режиме другие транзакции не могут вносить изменения в загружаемые таблицы. Единственным исключением из этого правила является случай, когда одновременно выполняется несколько параллельных сеансов прямой загрузки.
__________________
Телеграм чат

Последний раз редактировалось Marley; 26.09.2009 в 23:31.
Ответить с цитированием