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

Тема в разделе "SQL", создана пользователем -, 12 окт 2005.

Статус темы:
Закрыта.
  1. Гость

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

    DZX Гость

    На MS SQL можно залить пакетной загрузкой, сделать файл загрузки и загрузить его одним махом. ( 1 миллион записей закидывает за 2-3 минуты )
     
  3. Barmutik

    Barmutik Гость

    Подтверждаю слова DZX .. используйте BULK INSERT

    Если же хотите ещё больше скорости .. правда не знаю как это на Яве сделать .. нужно имплеменить самим внутренние OLE DB интерфейсы ... там скорость ещё возрастает в 2-3 раза .. но сложностей с реализацией там хватает ..
     
  4. Guest_bot_*

    Guest_bot_* Гость

    Когда вставляю шсертом в базу значения отображаются знаками вопросов в чем проблема и как ее исправить????
     
  5. Andrew Stephanoff

    Andrew Stephanoff Гость

    перед insert выполни SET CHARSET cp1251
     
  6. mikola1

    mikola1 Гость

    <!--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 по метаданным.
     
  7. Barmutik

    Barmutik Гость

    Отключение индексов врядли даст тот прирост производительности на который хочется рассчитывать...
     
  8. mikola1

    mikola1 Гость

    <!--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..
     
  9. DZX

    DZX Гость

    Спрашивали же БЫСТРАЯ вставка и выйгрыш в пару секунд врядли нужен, посему быстро это пакетно, для этого пакетная загрузка и существует.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей