powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Оптимизация Insert
18 сообщений из 18, страница 1 из 1
Оптимизация Insert
    #35424060
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача - запихнуть файл данных во временную таблицу для последующей обработки.

После парсинга файла получаем набор INSERT TABLE col1,col2 VALUES (val1,val2),(va1,val2),.....


Что интересно, если вставлять по 50 записей в транзакцию, то запрос исполнятся по 30мс, если по 500 записей то 10сек. Страшная прогрессия.


Задача конечно, вставить файл в таблицу максимально быстро, тк файл надо обрабатывать постоянно и он очень большой. ( под 100.000 записей)


Временная таблица создается вида DECLARE GLOBAL TEMPORARY TABLE session.blabla () on commit preserve rows not logged

Где копать?
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35424452
xz321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может проще воспользоваться утилитой импорт?
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35424756
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е 50 записей вставляются за 30мс, а 500 записей вставляются уже за 10 сек ? я правильно понял ?

А темп таблицы обязательно юзать ?

И что значит "надо обрабатывать постоянно" ? У вас обработка параллельными сессиям чтоли ?

Простой импорт в реальную таблицу 100000 записей шириной в почти килобайт на моем не самом мощном писюке проходит за ~ 15 сек.
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35425124
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mitekт.е 50 записей вставляются за 30мс, а 500 записей вставляются уже за 10 сек ? я правильно понял ?


Да, если делать 1 транзакцией. Получается самое оптимальное вставлять по 25 записей, что конечно мне кажется неправильным.


mitek
А темп таблицы обязательно юзать ?


Обычные таблицы еще дольше работают, и нет необходимости хранить эти данные, они нужны только для обработки.

mitek
И что значит "надо обрабатывать постоянно" ? У вас обработка параллельными сессиям чтоли ?

Такие файлы поступают постоянно ( с переодичностью раз в час) и их надо на основании данных таблиц в db2 обрабатывать.



100.000 за 15 сек меня бы устроило, но я не могу добиться такой производительности. По 25 записей 20.000 улетают в таблицу за минуту на не самых слабых железках.
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35425131
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CLI умеет работать с массивами параметров, и, стало быть, используя выражение вида
INSERT INTO TABLE(col1,col2) VALUES (?,?)
можно вставлять разом кучу строк.
Утилита import, надо полагать, пользуется этой возможностью.
Утилита load будет ещё быстрее.
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35425139
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xz321Может проще воспользоваться утилитой импорт?

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

Чтото мне подсказывает, что она делает это тем же SQL ;)
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35425162
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor MetelitsaCLI умеет работать с массивами параметров, и, стало быть, используя выражение вида
INSERT INTO TABLE(col1,col2) VALUES (?,?)


Скорее так:

INSERT INTO TABLE(col1,col2) VALUES (?,?),(?,?),(?,?),(?,?),(?,?),(?,?),(?,?),(?,?).....

Я б этом и говорю. Если в массиве 50 строк = 30мс, если 500 = 10 сек. Вот в чем проблема.

Можно еще попробовать

BEGIN ATOMIC
INSERT INTO TABLE(col1,col2) VALUES (?,?)
INSERT INTO TABLE(col1,col2) VALUES (?,?)
INSERT INTO TABLE(col1,col2) VALUES (?,?)
INSERT INTO TABLE(col1,col2) VALUES (?,?)
INSERT INTO TABLE(col1,col2) VALUES (?,?)
END
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35425277
mitek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Y.
Обычные таблицы еще дольше работают, и нет необходимости хранить эти данные, они нужны только для обработки.

тесты проводились ? за сколько импорт впихивает теже 100 тонн записей в реальную таблицу ?

Dmitry Y.
Такие файлы поступают постоянно ( с переодичностью раз в час) и их надо на основании данных таблиц в db2 обрабатывать.

раз в час это совсем немного. я думал как минимум раз в минуту :)

Dmitry Y.
100.000 за 15 сек меня бы устроило, но я не могу добиться такой производительности. По 25 записей 20.000 улетают в таблицу за минуту на не самых слабых железках.
:) конфиг железок в студию
странно как-то, а инсертите из проги какой или clp-скриптом ?
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35425470
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mitek Dmitry Y.
Обычные таблицы еще дольше работают, и нет необходимости хранить эти данные, они нужны только для обработки.

тесты проводились ? за сколько импорт впихивает теже 100 тонн записей в реальную таблицу ?


Сам insert практически не отличается - 5-10% падает производительность. Очень много времени тратится на создание самой таблицы и ее удаление.


mitek
Dmitry Y.
Такие файлы поступают постоянно ( с переодичностью раз в час) и их надо на основании данных таблиц в db2 обрабатывать.

раз в час это совсем немного. я думал как минимум раз в минуту :)


Да, только файликов там 50 штук :) Если делать последовательно, то в час не уложится.

mitek
Dmitry Y.
100.000 за 15 сек меня бы устроило, но я не могу добиться такой производительности. По 25 записей 20.000 улетают в таблицу за минуту на не самых слабых железках.
:) конфиг железок в студию
странно как-то, а инсертите из проги какой или clp-скриптом ?

Linux rubl 2.6.22-14-server #1 SMP Tue Feb 12 03:10:53 UTC 2008 x86_64 GNU/Linux
Install Path Level Fix Pack Special Install Number Install Date
--------------------------------------------------------------------------------------------
/opt/ibm/db2/V9.1 9.1.0.4 4 Thu Dec 20 04:03:56 2007 MSK



2 проца по 2 ядра 3.2Ггц, 4 Гб оперы. Все как по уставу:)


Инсертаем своим парсером файла на с++.
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35425492
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще как дб2 переносит если statement более 32кб, скажем 5Мб? Чтото тут не так.
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35425513
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://www-128.ibm.com/developerworks/db2/library/tips/dm-0403wilkins/


еще по теме.

Делаю также как там рекомендуют. Даже commit не делаю вообще пока.
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35425533
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Y. Victor MetelitsaCLI умеет работать с массивами параметров, и, стало быть, используя выражение вида
INSERT INTO TABLE(col1,col2) VALUES (?,?)


Скорее так:

INSERT INTO TABLE(col1,col2) VALUES (?,?),(?,?),(?,?),(?,?),(?,?),(?,?),(?,?),(?,?).....

Я б этом и говорю.

А я не об этом. Я про Binding parameter markers in CLI applications with column-wise array input и Binding parameter markers in CLI applications with row-wise array input . Хотя одно другому не мешает.
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35425563
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Victor Metelitsa
А я не об этом. Я про Binding parameter markers in CLI applications with column-wise array input и Binding parameter markers in CLI applications with row-wise array input . Хотя одно другому не мешает.

Во, надо покапать. Insert делать через bind. Кто -ньдь пробовал?
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35425584
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/t0007254.htm

Про bind
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35425615
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да LOAD лучше всех. Понятно, GLOBAL TEMPORARY TABLE не воспользуешься. Но какая необходимость каждый раз пересоздавать таблицы? Предыдущие же данные LOAD прекрасно грохнет сам.
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35426572
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот Ваш LOAD на Си.
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/t0007871.htm


Это тот самый BIND Insert.
Реализовал я его для себя. Замечательно грузит за пол секунды во временные таблицы по 1000 записей за транзацию. Причем тут уже все уперлось в сам парсер файла (надо будет подоптимизировать и его) тк проц на машине, где идет парсинг под 100% загрузки.


Все тема закрыта. Всем спс.
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35426574
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правильная ссылко
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/t0007871.htm
...
Рейтинг: 0 / 0
Оптимизация Insert
    #35426575
Dmitry Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правильная ссылко вот
http://publib.boulder.ibm.com/infocenter/db2luw/v8/topic/com.ibm.db2.udb.doc/ad/samples/cli/s-tbload-c.htm
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Оптимизация Insert
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]