Быстрый Insert для большого объема данных

  • Автор темы Автор темы Guest
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Необходимо сделать с помощью JDBC из Java-приложения
быструю вставку многих строк(например 1000) в таблицу.
Если делать последовательный insert 1000 раз, то выйдет очень долго.
Есть какой-нибудь способ быстрой вставки? Может, например, за одно обращение
к базе данных.
 
На MS SQL можно залить пакетной загрузкой, сделать файл загрузки и загрузить его одним махом. ( 1 миллион записей закидывает за 2-3 минуты )
 
Подтверждаю слова DZX .. используйте BULK INSERT

Если же хотите ещё больше скорости .. правда не знаю как это на Яве сделать .. нужно имплеменить самим внутренние OLE DB интерфейсы ... там скорость ещё возрастает в 2-3 раза .. но сложностей с реализацией там хватает ..
 
Когда вставляю шсертом в базу значения отображаются знаками вопросов в чем проблема и как ее исправить????
 
перед insert выполни SET CHARSET cp1251
 
<!--QuoteBegin-Царица Тамара+12:10:2005, 16:48 -->
<span class="vbquote">(Царица Тамара @ 12:10:2005, 16:48 )</span><!--QuoteEBegin-->Необходимо сделать с помощью JDBC из Java-приложения
быструю вставку многих строк(например 1000) в таблицу.
Если делать последовательный insert 1000 раз, то выйдет очень долго.
Есть какой-нибудь способ быстрой вставки? Может, например, за одно обращение
к базе данных.
[snapback]25751" rel="nofollow" target="_blank[/snapback]​
[/quote]
Для быстроты перед вставкой обычно отключают индексы, а после вставок - включают. Но это особенности настроек и архитектуры каждого SQL и здесь должен быть индивидуальный подход. В Interbase, например, можно отключить все индексы с помощью Update по метаданным.
 
Отключение индексов врядли даст тот прирост производительности на который хочется рассчитывать...
 
<!--QuoteBegin-Barmutik+29:10:2005, 10:21 -->
<span class="vbquote">(Barmutik @ 29:10:2005, 10:21 )</span><!--QuoteEBegin-->Отключение индексов врядли даст тот прирост производительности на который хочется рассчитывать...
[snapback]26446" rel="nofollow" target="_blank[/snapback]​
[/quote]
А какой прирост производительности хочется рассчитывать? Вообще-то вставка 1000 записей - не такой большой объем. А вот с 1 миллионом - может быть эффект. Особенно если есть несколько индексов и имеются связи Master-Detail. Да и задача вставки больших объемов записей не часто встречается...
Хотя если в настройке JDBC будет стоять COMMIT после каждого INSERT, то это опция погубит любые попытки оптимизировать insert..
 
Спрашивали же БЫСТРАЯ вставка и выйгрыш в пару секунд врядли нужен, посему быстро это пакетно, для этого пакетная загрузка и существует.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!