Вопрос Oracle: проблема улучшения обычной загрузки пути, direct = false, с количеством коммитов и размером bindsize / readsize - PullRequest
0 голосов
/ 23 марта 2011

В настоящее время я делаю академический тест TPC-H, и у меня есть несколько больших таблиц, которые я хочу загрузить, используя прямой путь (который работал великолепно и очень быстро) и обычный путь.

Длячто я использовал этот пакетный скрипт:

for /F "tokens=1,2" %%A in (table4_records.txt) do (
sqlldr userid='tpch/tpch' control=%%A.ctl rows=%%B bindsize=? readsize=? SILENT=HEADER log=bulkload_logs\sf4\bulk_%%A%1.log
)

Проблема в том, что независимо от того, какие значения я даю для параметров bindsize и / или readsize, он всегда фиксирует от 65534 до 65534 строк.Я уже передал размер %% B, который является точным количеством строк в таблице.

При прямой загрузке я просто использовал строки и фиксацию, как ДЕЙСТВИТЕЛЬНО сделано после загрузки таблицы отверстий.

Я хочу сделать что-то подобное, но с обычным путем загрузки - я знаю, что это не быстрее, но в этом суть.

Не могли бы вы сказать мне, как я могу дать правильные параметры, чтобы я мог:1 - загружать как можно больше данных за один раз;
2 - делать коммиты реже, предпочтительно в конце загрузки таблицы.

Вот имена таблиц и количество строк:

lineitem 23996604 -> является самым большим и имеет aprox.3 ГБ на диске
заказы 6000000
partsupp 3200000
запчасти 800000
заказчик 600000
поставщик 40000
нация 25
регион 5

Ответы [ 3 ]

0 голосов
/ 24 марта 2011

Вы не получите файл 3 ГБ для использования обычного пути загрузки и фиксации в конце. Из документов Oracle:

"Когда SQL * Loader отправляет в базу данных Oracle команду INSERT, весь массив вставляется за один раз. После вставки строк в массив связывания выдается оператор COMMIT."

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

Максимизируйте READSIZE и BINDSIZE, пока он не скажет, что вы достигли максимума для своей платформы.

0 голосов
/ 29 марта 2011

по электронной почте Ой:

Получается, что максимальное число строк в обычном пути точно равно 65534, так что я могу продолжать увеличивать размер моего биндара! LOL

Извините, я только что нашел это в документации Oracle

0 голосов
/ 23 марта 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...