![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
NightWolf3000 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 28.1.2013 Репутация: нет Всего: нет |
Задача в сабже.
Генерация и вставка написана, но работает медленно.
идеи по исправлению этого жуткого кода? |
|||
|
||||
danilych |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 2.2.2011 Репутация: нет Всего: 3 |
что за БД, - может попробовать нативные утилиты?
|
|||
|
||||
NightWolf3000 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 28.1.2013 Репутация: нет Всего: нет |
db2, появилась мысль использовать
скорость увеличилась, однако на 3 итерации виснет на st.executeBatch(); |
|||
|
||||
serger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: 2 Всего: 5 |
Можно проверить на тестовом запросе. Драйвер обновить...
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
d_k |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 20.7.2004 Репутация: 1 Всего: 1 |
стейтменты стоит закрывать... да и использовать предварительно откомпиллированные запросы
Это сообщение отредактировал(а) d_k - 28.5.2013, 07:51 |
|||
|
||||
serger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: 2 Всего: 5 |
Тут примерчик:
Your text to link here... Можно для эксперементов с размером batchSize поиграться... Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
NightWolf3000 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 28.1.2013 Репутация: нет Всего: нет |
преобразил код, теперь около 600к записей вбрасывает за минуту, но маловата скорость все равно, долго думает на st.executeBatch();
и если я добавляю здесь st.addBatch(sql); поочередно вставку в разные таблицы то это не сть хорошо? стоит разделить на два PreparedStatment? но пробовал на одном коннекте из пула скорость сохраняась такая же ибо стайтменты выполнялись последовательно, на двух коннектах теряется один из PreparedStatment и не дает сетить значения. За совет по обновлению драйвер благадорю, стало быстрей. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
serger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: 2 Всего: 5 |
можно же по-эксперементировать, но думаю лучше однотипные запросы. База-то какая? мб есть поддержка своих способов заливки. Или всё-таки через утилиты? Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
NightWolf3000 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 28.1.2013 Репутация: нет Всего: нет |
я писал уже, база - IBM db2. Насчет своих способов: вы подразумеваете аналог постгресовской copy? можно пример утилит на любой базе?
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
serger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: 2 Всего: 5 |
да банальный psql. Должны быть утилиты работы из командной строки.
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
NightWolf3000 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 28.1.2013 Репутация: нет Всего: нет |
попробовал для разных таблиц разделить следующим образом
получил следующую ошибку com.ibm.db2.jcc.am.SqlException: [jcc][10120][10943][4.14.113] Invalid operation: statement is closed. ERRORCODE=-4470, SQLS TATE=null на вот этой строчке pst1.setLong(1, value); Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
serger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: 2 Всего: 5 |
NightWolf3000, а всё-таки, через стандартные db-тулсы скорость намного быстрее?
Ещё индексы влияют на insert.
разве так можно? ;) Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
NightWolf3000 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 28.1.2013 Репутация: нет Всего: нет |
serger, через стандартные пока что не реализовал, не хватает познаний, читаю доки и статьи как их можно использовать. нужна генерация данных и сейчас она уже реализована а в стндартных пока что не нашел как генерить нужную информацию. так что проверить быстрее или нет пока что не смог.
насчет индексов проверю тогда как доберусь до базы, не помню так) Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
serger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: 2 Всего: 5 |
||||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
Я в своем случае шел тем же путем: сначала пробовал просто insert через PreparedStatement, потом batch, потом - batch с предварительно дропнутым индексом. А потом выкинул все и перешел на загрузку внешней утилитой (у меня был Оракл, поэтому sqlldr).
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |