【发布时间】:2013-09-20 23:15:35
【问题描述】:
根据h2 features page,我在 H2 文档中看到了一些不一致的地方
数据库文件锁定
[...] 实现了以下文件锁定方法:
默认方法是 FILE 并使用看门狗线程来保护数据库文件。看门狗每秒读取一次锁定文件。
第二种方法是 SOCKET 并打开一个服务器套接字。套接字方法不需要每秒读取锁定文件。插座 仅当仅由以下人员访问数据库文件时才应使用方法 一台(并且始终是同一台)计算机。
第三种方法是FS。这将使用 FileChannel.lock 使用本机文件锁定。
也可以不锁定文件打开数据库;在这种情况下,由应用程序来保护数据库文件。 否则将导致数据库损坏。
从上面看来,如果在编写时不手动关注并发性,就不可能在不同计算机之间共享远程文件系统上的数据库。 然而,在高级页面中,他们添加了第五种方法file locking serialized,它应该允许:
这种锁定模式允许打开多个连接到同一个 数据库。可以从多个进程打开连接,并且 来自不同的计算机。写入数据库时,访问是 内部自动同步。
我是否正确地理解了存在矛盾?还是我误解了文件锁定序列化?
【问题讨论】:
标签: java database multithreading h2