Который будет иметь больше производительности в DB2 - PullRequest
0 голосов
/ 10 ноября 2010

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

У меня есть 2 варианта, но я не знаю, что делать, чтобы улучшить производительность.

1 вариант

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

2 варианта сначала вставьте с помощью условия, а затем с помощью оператора обновления.

Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 10 ноября 2010

Наличие курсора для получения данных, выполнения расчетов, а затем вставки в базу данных займет много времени. Я предполагаю, что, поскольку он включает подключения к данным и ввод / вывод для каждого поиска и вставки (для обеих баз данных)

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

0 голосов
/ 05 января 2012

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

1) Написать хранимую процедуру SQL (нет необходимости выгружать данные из базы данных для внесения изменений) 2) Если вы используете Java / JDBC, используйтеФункция пакетного обновления для одновременного обновления нескольких записей. 3) Если вы используете такой инструмент, как Informatica, включите функцию массовой загрузки в informatica

. Также см. Статью IBM DW об улучшении производительности вставки.Статья немного старше, но концепции остаются в силе.http://www.ibm.com/developerworks/data/library/tips/dm-0403wilkins/

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