Как эффективно вставить данные в базу данных oracle db? - PullRequest
1 голос
/ 27 апреля 2009

Как нам вставить данные о 2 миллионах строк в таблицу базы данных оракула, где у нас много индексов? Я знаю, что одним из вариантов является отключение индекса, а затем вставка данных. Может кто-нибудь сказать мне, что г другие варианты?

Ответы [ 6 ]

1 голос
/ 13 ноября 2013

Есть много хитростей, чтобы закрепить вставку, ниже я написал некоторые из них

  • если вы используете sequence.nextval для вставки, убедитесь, что последовательность имеет большое значение кэша (обычно достаточно 1000)
  • удалять индексы перед вставкой и создавать потом (убедитесь, что вы получаете сценарии создания индексов перед удалением), при создании вы можете использовать параллельную опцию
  • если у целевой таблицы есть зависимости fk, отключите их перед вставкой и после включения снова включите. если вы уверены в своих данных, вы можете использовать опцию novalidate (опция novalidate действительна для oracle , другие системы rdbms, вероятно, имеют аналогичную опцию)
  • если вы выбираете и вставляете, вы можете дать параллельную подсказку для оператора select, а для вставки вы можете использовать подсказку добавления ( прямая вставка ) (концепция прямой вставки действительна для oracle , другие системы rdbms, вероятно, имеют аналогичную опцию)
1 голос
/ 28 апреля 2009

Check SQL * Loader out (особенно параграф о оптимизация производительности ): это стандартная утилита массовой загрузки для Oracle, и она хорошо справляется, если вы знаете, как используйте его (как всегда с Oracle).

1 голос
/ 27 апреля 2009

массовая загрузка с предварительно отсортированными данными в порядке индексации ключа

0 голосов
/ 19 января 2014

В качестве еще одного варианта можно использовать расширенные и более быстрые утилиты oracle data pump (expdp, impdp), доступные 10 G и выше. Тем не менее, Oracle по-прежнему поддерживает старый экспорт / импорт (exp, imp).

Oracle предоставляет нам множество вариантов загрузки данных, причем несколько быстрее, чем другие:

  • Oracle10 Data Pump Утилита импорта Oracle
  • Вставка SQL и слияние
  • операторы PL / SQL массовых нагрузок для оператора PL / SQL Форалла
  • SQL * Loader

Плюсы / минусы каждого можно найти здесь ..

0 голосов
/ 27 апреля 2009

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

Все эти опции имеют свою цену. Каждый вариант увеличивает риск повреждения данных в том смысле, что вы можете получить нулевые FK и т. Д.

0 голосов
/ 27 апреля 2009

Не уверен, как вы вставляете записи; если ты можешь; вставьте данные небольшими порциями. По моему опыту 50 наборов по 20 тысяч записей часто быстрее, чем 1 х 1000000

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

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