Насколько эффективен executeBatch для подготовленного оператора? - PullRequest
6 голосов
/ 17 июля 2009

В ответ на этот вопрос задается вопрос: насколько эффективен метод executeBatch? Есть ли тест производительности, который говорит: «Если у вас есть 1000 записей для вставки, использование executeBatch вместо executeUpdate сэкономит вам x количество циклов базы данных?»

Или это просто соглашение?

EDIT: Вот то, с чем я работаю: DB2 V 8.1, размещенная в Z / OS, веб-приложение, которое будет вставлять 80 000 записей за один раз в худшем случае.

Ответы [ 5 ]

8 голосов
/ 17 июля 2009

Не уверен, какую базу данных вы используете. Когда я запустил тест с использованием db2, я увидел следующее:

Для записи в базу данных:

1 вставка заняла 2500 микросекунд.

10 вставок заняло 6000 микросекунд. (600 микросекунд на запись)

10000 вставок заняло около 1 миллиона микросекунд. (100 микросекунд на запись)

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

Также обратите внимание: точные цифры будут варьироваться в зависимости от вашей БД и настроек. Таким образом, вам придется найти свое собственное «сладкое пятно». Но это дает вам представление.

1 голос
/ 17 июля 2009

По моему опыту, это значительно быстрее - даже если вы вставляете / обновляете только несколько записей за раз. Если вы делаете более одного обновления, я бы почти всегда рекомендовал их пакетировать, если это имеет смысл.

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

1 голос
/ 17 июля 2009

Я не уверен, о чем вы спрашиваете, но для вставки многих тысяч строк пакетный оператор работает на очень быстрее. Я не могу дать вам цифры.

0 голосов
/ 23 декабря 2014

В операторах обновления batchExecute () требуется больше времени, чем в операторах вставки, которые я использую с 5001 операторами вставки и обновления Соотношение производительности 15:84

0 голосов
/ 21 мая 2014

Спецификация JDBC Глава 14 гласит, что отправка нескольких операторов SQL вместо индивидуально, может значительно улучшить производительность

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