2012-04-16 2 views

ответ

4

Обычно, уменьшая объездные поездки. Например, если вы собираетесь выполнить один и тот же оператор 100 раз со 100 различными наборами переменных привязки, было бы гораздо эффективнее сразу отправить все 100 наборов переменных привязки в базу данных и вернуть все 100 результатов, используя один так как он будет взимать 100 отдельных сетевых поездок для последовательного выполнения каждого запроса. Если вы сообщите драйверу JDBC, что вы хотите создать пакет, драйвер может свести к минимуму количество раз, когда он должен связываться с базой данных.

+1

Кроме того, я думаю, что особенно драйвер JDBC Oracle применяет еще некоторую оптимизацию, поскольку скорость при использовании вставленных вставок почти соответствует скорости SQL * Loader. Но я не знаю, что именно делает это так быстро. –

+0

@a_horse_with_no_name, я немного заинтересован, чтобы знать такую ​​оптимизацию. Действительно ли это происходит на стороне базы данных? то, что я пытаюсь понять, это сказать, что у вас есть две базы данных, например, оракул и mysql. Если я запускаю один и тот же запрос в обеих этих производительности базы данных, это будет меняться. – UVM

+0

@a_horse_with_no_name - я мог бы увидеть, как драйвер JDBC Oracle выполняет загрузку прямого пути, если у вас есть партия инструкций 'INSERT', но это будет непросто сделать прозрачно. Вы должны иметь возможность получить обычную траекторию SQL * Loader-подобную производительность, просто уменьшая круговую поездку по сети и объединяя привязку переменных привязки. –

Смежные вопросы