JDBC addBatch more efficient?

Started by David Wallalmost 18 years ago5 messagesgeneral
Jump to latest
#1David Wall
d.wall@computer.org

Just checking if the JDBC library's batch processing code is more
efficient with respect to the postgresql back end or not. Does it
really batch the requests and submit them once over the link, or does it
just send them to the database to be processed one at a time?

Thanks,
David

#2Kris Jurka
books@ejurka.com
In reply to: David Wall (#1)
Re: JDBC addBatch more efficient?

On Sun, 20 Apr 2008, David Wall wrote:

Just checking if the JDBC library's batch processing code is more efficient
with respect to the postgresql back end or not. Does it really batch the
requests and submit them once over the link, or does it just send them to the
database to be processed one at a time?

The JDBC driver's batch processing is more efficient than regular
execution because it requires fewer network roundtrips so there's less
waiting. The JDBC batch is broken into an internal batch size of 256
statement and all of these are sent over to the server at once.

Kris Jurka

#3David Wall
d.wall@computer.org
In reply to: Kris Jurka (#2)
Re: JDBC addBatch more efficient?

The JDBC driver's batch processing is more efficient than regular
execution because it requires fewer network roundtrips so there's less
waiting. The JDBC batch is broken into an internal batch size of 256
statement and all of these are sent over to the server at once.

That's great, Kris. I believe our code only does 100 updates/deletes
before committing the transaction anyway, so this should work well for us.

Thanks,
David

#4Ivano Luberti
luberti@archicoop.it
In reply to: Kris Jurka (#2)
Re: JDBC addBatch more efficient?

Does this means that the two features are independent one from each other ?
In other words, can we say that JDBC batch will limit information
exchange between client and server while Postgres prepared statements
will optimize their execution ?

Kris Jurka ha scritto:

On Sun, 20 Apr 2008, David Wall wrote:

Just checking if the JDBC library's batch processing code is more
efficient with respect to the postgresql back end or not. Does it
really batch the requests and submit them once over the link, or does
it just send them to the database to be processed one at a time?

The JDBC driver's batch processing is more efficient than regular
execution because it requires fewer network roundtrips so there's less
waiting. The JDBC batch is broken into an internal batch size of 256
statement and all of these are sent over to the server at once.

Kris Jurka

--
==================================================
Archimede Informatica NEWS!
==================================================

Realizzato il Sistema Integrato per la biglietteria della Torre di Pisa:
prenotazione, vendita, pre-vendita ed emissione dei biglietti di ingresso
alla Torre sia online che presso le biglietterie dislocate sulla piazza:

_http://www.opapisa.it/boxoffice

_Partner del Progetto Ci-Tel "Front office Telematico per il cittadino"
Ente Coordinatore Comune di Pisa

_http://www.comune.pisa.it/doc/e-government.htm

_==================================================
dott. Ivano Mario Luberti
Archimede Informatica societa' cooperativa a r. l.
Sede Operativa
Via Gereschi 36 - 56126- Pisa
tel.: +39-050- 580959
tel/fax: +39-050-9711344
e-mail: archimede@archicoop.it
web: _http://www.archicoop.it

_ <http://www.archicoop.it/&gt;__ <http://www.archicoop.it/&gt;

#5David Wall
d.wall@computer.org
In reply to: Ivano Luberti (#4)
Re: JDBC addBatch more efficient?

Does this means that the two features are independent one from each
other ?
In other words, can we say that JDBC batch will limit information
exchange between client and server while Postgres prepared statements
will optimize their execution ?

I've not used it yet, but my impression is that you can use
PreparedStatements (in a loop typically), often surrounded by jdbc
transaction commit so each statement doesn't run in its own
transactions, do an addBatch and then submit that so all of the
statements are executed by the server as a group. So in this case, yes,
they should be independent of each other.

David