atom feed9 messages in com.googlegroups.h2-databaseRe: MULTI_THREADED vs. MVCC
FromSent OnAttachments
Rami OjaresJun 11, 2010 3:26 am 
Thomas MuellerJun 13, 2010 10:19 pm 
James GregurichJun 13, 2010 10:44 pm 
Rami OjaresJun 14, 2010 1:38 am 
Sergi VladykinJun 15, 2010 12:32 am 
Thomas MuellerJun 16, 2010 10:26 am 
Rami OjaresJun 16, 2010 10:35 am 
James GregurichJun 16, 2010 11:32 am 
Ryan HowJun 16, 2010 9:43 pm 
From:Ryan How (
Date:Jun 16, 2010 9:43:53 pm

Hi Rami,

Transaction is made up of one or more queries. So a long running transaction can be many small queries.

When a query is running it will block everything else unless you have multithreaded on. A long running transaction (made up of many small queries) will not block other queries, but will lock tables, depending on what you are doing.

"long running updating transaction seems to block all other activity". Do you mean a long running update statement or a long running transaction made up of many small updates? If it is a long running single update then it will block, if it is many small updates in a larger transaction then it shouldn't block (unless it is locking the table, but I don't think that should happen in MVCC???).

Are you sure you need MVCC? Can you just pick a transaction isolation level so you can still query the table while it is being updated?, or is that the point of MVCC, sorry I'm not full bottle on that stuff.

Perhaps if you post a test case and example of what is happening then that will help to clarify?

I had an issue with long running transactions made up of many small updates and inserts, it turned out the best way for me was to restructure what I was doing to just use small transactions, but I know that isn't the solution for every case because sometimes you really need that transactional integrity.

Hope this helps,