2013-07-02 4 views
0

Привет Я пытаюсь написать Sybase IQ с помощью JDBC из файла, который содержит тысячи строк. Люди говорят, что я должен использовать batchUpdate. Поэтому я читаю файл NIO и добавляю его в пакеты PreparedStatement. Но я не вижу никаких преимуществ здесь для всех строк, мне нужно сделать следующееPreparedStatement.addBatch и тысячи строк из файла и путаница

PreparedStatement prepStmt = con.prepareStatement( 
    "UPDATE DEPT SET MGRNO=? WHERE DEPTNO=?"); 
    prepStmt.setString(1,mgrnum1);    
    prepStmt.setString(2,deptnum1); 
    prepStmt.addBatch(); 

Я не понимаю, что такое преимущество партий. Я должен как-то выполнить addBatch в течение тысяч времени для всех записей файла. Или я должен использовать addBatch() для записи записей из файла в sybase iq. Пожалуйста, направляйте. Большое спасибо.

+0

Актуальность NIO ускользает от меня. – EJP

ответ

1

С пакетными обновлениями, в основном, вы сокращаете свои сетевые накладные расходы ввода-вывода. Это дает преимущества, аналогичные тому, что дает BufferedWriter при записи на диск. Это в основном то, что это такое: буферизация обновлений базы данных.

Любой тип ввода-вывода имеет стоимость; будь то дисковый ввод-вывод или сеть. Буферизируя ваши вставки или обновления в пакетном режиме и делая массовое обновление, вы минимизируете удары по производительности, возникающие каждый раз, когда вы попадаете в базу данных и возвращаетесь.

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

Когда в паре с PreparedStatement сыпучие обновления еще более эффективным, так как Заявление предварительно скомпилированных и план выполнения кэшируется, а также на протяжении всего исполнения партии. Таким образом, привязка переменных происходит в соответствии с выбранным вами размером партии, а затем один вызов batchUpdate() сохраняет все значения за один раз.

0

Преимущество addBatch заключается в том, что он позволяет драйверу jdbc записывать куски данных вместо того, чтобы отправлять отдельные операторы вставки в базу данных. Это может быть быстрее в определенных ситуациях, но реальная жизнь может отличаться. Следует также отметить, что рекомендуется использовать партии из 50-100 строк вместо того, чтобы добавлять все данные в одну партию.