H2 Database の明示的ロック
H2 Database には、行レベルロックはない。テーブルレベルロックのみ。
並列性は低くなるものの、処理が高速になるので、テーブルレベルロックのみにしているようです。
別途、MVCC (Multi-Version Concurrency Control) という仕組みが開発されているようですが、まだテストが十分でないとのことです。
SQL | テーブルレベル |
---|---|
SELECT FOR UPDATE | EXCLUSIVE |
UPDATE, INSERT, DELETE | EXCLUSIVE |
ロックは SHARED と EXCLUSIVE の2種類のみ。
EXCLUSIVE LOCK を獲得するとリリースされるまで、ロックを要求する他のトランザクションは待たされます。
http://www.h2database.com/html/advanced.html#transaction_isolation