УЛУЧШИТЕ ВСТАВКУ ОГРОМНЫХ ТАБЛИЦ ORACLE

#oracle #optimization #insert #bulk-load

Вопрос:

Доброе утро,

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

Мой вопрос в том, если бы вставка была сделана таким образом на большом столе, она бы пошла быстрее?

 Insert /*  append parallel */ 
in (select * from hugetable 
    where 1 = 2)
select * from table2
 

Спасибо

Комментарии:

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

Ответ №1:

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

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

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

Параллельная подсказка может сработать, но в большинстве случаев она не поможет. Есть много вещей, которые должны быть правильно настроены, чтобы это работало на вас.

Самое главное-найти первопричину вашей скорости или отсутствия скорости. Если ваше оборудование с трудом вмещает 10 Мбит/с, вы не можете ожидать, что скорость вставки будет выше этой.

Итак, короче говоря, есть общий ответ: это зависит от обстоятельств. Не тот ответ, на который вы надеетесь, но несколько подсказок, которые могли бы указать направление, в котором вы могли бы продолжить расследование.