List:General Discussion« Previous MessageNext Message »
From:Joerg Bruehe Date:December 5 2005 9:58am
Subject:Re: sporadic batch update problem
View as plain text  
Hi Jeff, all!

Jeff Drew wrote:
> Sporadically, the last few entries of a batch are not written.  I'm writing
> to a mysql database using JDBC.   Here's a short version of my code.  Does
> anyone have suggestions on possible causes or other diagnostics?

I do not claim any JBDC knowledge, so I have to speculate:

> 
> class DatabaseWriter{
> 
> int writeCount=0;
> 
> public DatabaseWriter(){
> 
>   PreparedStatement preparedStatement = connection.prepareStatement("insert
> into       msgpersecond ( time , count , sendercompid , targetcompid )
> values ( ? , ? , ? , ?  )");
> 
>   connection.setAutoCommit( false ); // turn off auto-Commit
> }
> 
> public void process(Object input){
> 
>   preparedStatement.setFloat( 2 , event.msgPerSecond );
>   preparedStatement.addBatch( );
>   writeCount++:
> 
>   if (writeCount > 50) {
>     updateCounts = preparedStatement.executeBatch( );
>     connection.commit( );
> 
>     preparedStatement.clearBatch( );
>     writeCount=0;
>   }
> 
> }
> }
> 
> process() gets called a lot.  The code usually works fine, but sometimes 3
> to 20 or so records that definitely are added to the batch but don't get
> written.
> 
> I'd greatly appreciate any suggestions.

I do not see any handling of the records processed in the last, not 
completed lot of 50. Do you call a final "commit" somewhere else?

Jörg

-- 
Joerg Bruehe, Senior Production Engineer
MySQL AB, www.mysql.com
Thread
sporadic batch update problemJeff Drew5 Dec
  • Re: sporadic batch update problemJoerg Bruehe5 Dec