【发布时间】:2015-08-11 06:14:09
【问题描述】:
是否可以在具有不同进程的同一台机器(无服务器)上同时(读/写)使用嵌入式数据库。一个多线程进程中的并发读/写呢?
我试图找出如何在 HSQL、H2、Apache Derby 和 SQLite(通过 xerial JDBC)中解决并发问题,但我不太了解那些锁定机制(MVCC、OCC 等),所以我需要有人来纠正我所拥有的找到了。
- H2:只有一个可能是多线程的进程可以连接到数据库。
- 写入读取操作的表级锁定不需要锁定,并且可以与写入同时完成(N 个读取器一个写入器)
- MVCC - 用于写入的表或行级别锁定(N 个读取器一个写入器??)
- Hsql:看起来和H2完全一样,但是在MVCC机制上有一些不同
- Apache Derby (JavaDB):只有一个可能是多线程的进程可以连接到数据库。
- 用于写入的表级锁定或行级锁定。读取操作不需要锁定,可以与写入同时完成(N 个读取器一个写入器)
- SQLite (xerial JDBC):多个进程可以同时连接,但只有一个可以进行写入操作。 (数据库锁定)。
- 当有写锁时其他进程或线程不能进行读写操作??
【问题讨论】:
标签: sqlite concurrency hsqldb h2 javadb