2016-04-21 11 views
-3

У меня есть один сценарий UNIX В этом мы создаем таблицу, индексируем и загружаем дату из файла в эту таблицу с помощью SQL Loader. И делать около 70 прямых обновлений (не используя для всех или массового сбора) в этой таблице.Настройка производительности - Вставка

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

Во время вставки этих данных в другую таблицу занимает 20 минут. Как это можно улучшить?

  1. Нет проблем с вставкой, потому что на одном столе мы вставляем 500 000 ректоров из другого стола, который отлично работает. Вставка выполняется менее чем за минуту.

Вставить в таблицы() select() from tablex; Это занимает 20 минут для 500 000 записей Tablex - создано, загружено, 70 прямое обновление сделано в том же сценарии оболочки.

Проверено стоимость плана объяснения для отдельного выбора и со сценарием вставки оба они одинаковы.

Вставка в таблицы() select() из таблицы; Вышеуказанный оператор выполняется менее секунды.

  • Я использовал параллельный намек. Стоимость снижается. И использование процессора равняется нулю.
  • Должен ли я создать еще одну таблицу tablez, а затем загрузить данные из tablez в мою финальную таблицу?
  • Требуется сбор статистики? Это ежедневная программа.
+1

Шаг № 1 - прочитайте [ask]. – OldProgrammer

ответ

0

Когда мы делаем прямую вставку пути с помощью SQL Loader, записи вставляются над HighWaterMark. После того, как загрузка будет завершена, и HighWaterMark будет перемещен вверх, может быть много пустых блоков ниже исходной/старой позиции HighWaterMark. Если ваш SELECT отправится для сканирования полного стола, он также будет считывать все эти пустые блоки. Убедитесь, что ваша таблица накопила много пустых блоков за определенный промежуток времени. Для этого вы можете использовать Сегментный советник. Основываясь на рекомендациях советника, сократите таблицу и освободите неиспользуемое пространство. Это может ускорить выполнение. Надеюсь это поможет.

+0

Привет Спасибо за ваш ответ. Im Создание таблицы, однократная вставка с использованием SQL Loader и много обновлений для реализации бизнес-логики. Отправьте это из этой таблицы в другую таблицу. Поскольку я создаю таблицу здесь, я думаю, что не будет никакой проблемы с пустым блоком. – VIDHYA

+0

Получил это. Просьба проверить приведенные ниже данные. 1. Каков размер таблицы X и таблицы Y в ГБ? 2. Существуют ли различия в планах объяснения выбора из таблицы X и таблицы Y? 3. Если 1 и 2 выше одинаковы, тогда проверьте, есть ли какой-либо другой процесс в процессе ввода/вывода или процессора во время вставки в таблицу X. Вы можете использовать AWR или OEM или динамические представления производительности, чтобы проверить, если это так. Надеюсь, это поможет. Благодарю. – ArtBajji