Choosing transaction isolation level for MySQL

In performance testing our application, which is using MySQL, we encountered deadlocks. We did not observe deadlocks when we tested against H2 or PostgreSQL in attempts to diagnose the problem; both of those DBs have default transaction isolation level of READ COMMITTED. By switching from the default transaction isolation level of REPEATABLE READ to READ COMMITTED in MySQL, we do not encounter deadlocks.

Does Flowable have any official recommendation on choosing transaction isolation level in MySQL? Are there use cases for which you wouldn’t want READ COMMITTED for transaction isolation level?

Hey @carolylee,

As you’ve seen from your performance testings using REPEATABLE READ leads to deadlocks in MySQL. Therefore, we suggest using READ COMMITTED transaction isolation level for MySQL.

Keep in mind that other DBs such as PostgreSQL and Oracle use READ COMMITTED as a default transaction isolation level.

Cheers,
Filip