• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

JDBC executeBatch vs executeUpdate

 
Greenhorn
Posts: 29
  • Number of slices to send:
    Optional 'thank-you' note:
Hi everyone,

I have a question regarding executebatch vs executeUpdate.
I am wondering how many statements are minimun , acceptable for batching?
I mean is it bad idea to add 15 statements to addbatch?
What is recommended here, I couldnt find any documentation that explains like abour 1000 records should use addBatch , and for less than 20 record, it is better to use .executeUpdate  inside a loop.

Thatnk in advance!
 
Saloon Keeper
Posts: 15625
366
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
I guess the true answer depends on your JDBC implementation, but in general I'd use the the same guideline I'd use for for-loops:

Edsger Dijkstra wrote:2 or more, use a for



I don't see a reason why you couldn't also create a batch containing just two statements.
 
Björn Björnsen
Greenhorn
Posts: 29
  • Number of slices to send:
    Optional 'thank-you' note:
Hmm...
So doesnt matter if you use executeUpdate or addBatch -> executeBatch for less than 20 statement.

 
Stephan van Hulst
Saloon Keeper
Posts: 15625
366
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
I'm not saying it doesn't matter at all.

I'm saying you probably already spent more time thinking on the problem than you'll ever save by using one option over the other.
 
Saloon Keeper
Posts: 27871
196
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
I'd venture that a batch submits multiple statements in chunks to the database server, but excuteUpdate takes every statement in the transaction and pushes them all to the server at once. You might see a difference if you're using immediate updates rather than committed ones. But like Stephan said, it's probably not worth agonizing over. I'd batch if I had 10 or more updates in a transaction, as a general rule.

Then again, I'm usually using JPA and I let it worry about when to do which.
 
Marshal
Posts: 79424
377
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:

Tim Holloway wrote:I'd venture . . .

We are all guessing. I think Stephan has given a helpful answer:-

. . . you probably already spent more time thinking on the problem than you'll ever save . . .

If you really want to find out, execute each of the instructions 1,000,000× and time them. Repeatedly. in different orders, preceded by lots of the same instructions to make sure all optimisations have time to kick in. Only then do the timing, and you will probably find Stephan is right.
You may find that a database instruction runs more slowly the first time you try it than on subsequent occasions. If so, that probably means the database is indexing the queries and later on those indices allow it to run much faster.
 
Marshal
Posts: 28262
95
  • 2
  • Number of slices to send:
    Optional 'thank-you' note:
I've never used executeBatch, so when your question appeared my question was "Why use executeBatch" anyway? Well, the people at Baeldung have writtena tutorial about executeBatch in which they address that question. Their answer is "Performance and data consistency are the primary motives to do batch processing."

Performance, we've covered that already here. Your mileage may vary, as they say. But data consistency: well, you can build a transaction from multiple executeUpdate statements as well, so again the benefits are unclear. The statement repeatedly made is that executeBatch only accesses the database once whereas 100 calls to executeUpdate accesses the database 100 times. Whether that makes any difference is going to depend on your database architecture so, again, try both and see what difference it makes.
 
Campbell Ritchie
Marshal
Posts: 79424
377
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
I would expect that one large access is going to be much faster than hundreds of small accesses.
 
Tim Holloway
Saloon Keeper
Posts: 27871
196
  • Number of slices to send:
    Optional 'thank-you' note:
I'll admit to speculation, but I'm pretty sure that there is actual documentation on this that I've read.. And hopefully not garbled too much trying to remember.

I double-checked recent JDBC docs, though and while performance is a thing, one of the features of executeBatch is that it can return multiple result indicators; not to be confused with a ResultSet of database rows. It also requires batch underlying support from the JDBC driver to function.

Note also that there's executeBatch() and then there's executeLargeBatch().
 
Campbell Ritchie
Marshal
Posts: 79424
377
  • Number of slices to send:
    Optional 'thank-you' note:

Tim Holloway wrote:. . . and then there's executeLargeBatch().

. . . whose documentation says it is intended for when the update count exceeds Integer.MAX_VALUE.
 
Campbell Ritchie
Marshal
Posts: 79424
377
  • Number of slices to send:
    Optional 'thank-you' note:
Not that any of those links says anything about performance.
 
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |