We are performance monitoring our application and my DBA let me know
that we had over 3 MILLION rollbacks in a single day.  We are using
WebSphere to DB2 on Win2k3 servers.

I looked in our code and could not find anything.  Used p6spy and found
that every time queryForXXX is called I received a rollback.  Stepping
through the queryForList code in SqlMapExecutorDelegate.java the
autoStartTransaction starts a transaction if none is present and since
we don't have commitRequired set, the autoEndTransaction will cause a
rollback.

I assume there is a good reason to start the transaction here.  It seems
like extra work creating a transaction that will always be rolled back.
Can someone explain why this is good to me so I can forward the
information to my DBA?  Any links supporting the argument would be
great.  Is there a way to use the queryForXXX without creating a
transaction?  I assume it is better to not have commitRequired?

Thanks for your time.

 

Tom Henricksen
Consultant
Advanced Technologies Group, Inc.

 

Reply via email to