Tag Archives: General

Transactions in J2EE

Some resources for a good introduction to Transactions in J2EE :

Advertisement

Leave a comment

Filed under Uncategorized

Transation Isolation Levels


Discussing with a colegue about defining transactions in our application we finished by talking about transaction isolation levels and finally I got into problems explaining the problems faced in concurrent transactions (I wasn’t able to tell the difference between non-repeatable and phantom reads [sigh/]). I decided to write down for further references.

Transaction isolation levels are defined according to the state of data during the following 3 scenarios (they compair the data accessed from 2 different transactions):
* dirty reads
occur when a transaction reads data written by concurrent uncommited transaction;
* non-repeatable reads
occur when a transaction re-reads data it has previously read and finds that data has been
modified by another transaction (that committed since the initial read);
* phantom read
occur when a transaction re-executes a query returning a set of rows that satisfy a search
condition and finds that the set of rows satisfying the condition has changed due to another
recently-committed transaction;

Note: even if it seems that non-repeatable reads and phantom reads are the same thing, the difference is made from the fact that in the 1st case the same rows are returned but their data is modified, while in the 2nd case another set of rows is returned.
Defined isolation levels:

DB Isolation Level Dirty Read Non-Repeatable Reads Phantom read
Read uncommitted Y Y Y
Read committed N Y Y
Repeatable read N N Y
Serializable N N N
Java Level Dirty Read Non-Repeatable Reads Phantom read
TRANSACTION_NONE Y Y Y
TRANSACTION_READ_UNCOMMITTED Y Y Y
TRANSACTION_READ_COMMITED N Y Y
TRANSACTION_REPEATABLE_READ N N Y
TRANSACTION_SERIALIZABLE N N N


Still I would like to see more details on the separation made on non-repeatable reads and phantom reads.

Leave a comment

Filed under Uncategorized

Tomcat – JRockit

Found this on this weblog: Random thoughts:

Turns out that it wasn’t Tomcat 5 that provided the 15-20ms/page performance. Instead, it was the JRockit 8 JVM that did the trick. I got the same performance with Tomcat 4, but switching to Sun JVM /w server settings increased the rendering time to about 40ms/page. Oh well.

I definitely must try this.

Leave a comment

Filed under Uncategorized