为什么我的嵌入式 h2 程序写入 .mv.db 文件快速入门 h2

2022-09-01 03:46:28

我按照 h2 数据库网站上的快速入门指南创建了一个新的数据库表并插入了一些数据。应用程序运行平稳,可以毫无问题地读取和写入数据库。

快速入门 h2

  • 将 h2*.jar添加到类路径(H2 没有任何依赖项)
  • 使用 JDBC 驱动程序类:org.h2.Driver
  • 数据库 URL jdbc:h2:~/test 在用户主目录中打开数据库测试
  • 自动创建新数据库

现在我想用Web前端h2控制台查看数据,但每次我尝试打开数据库时,它都会创建一个新数据库。

经过长时间的搜索,我注意到我的Java-App,它使用h2嵌入式版本写入一个名为“.mv.db”的文件,而Web前端创建文件“.h2.db”(这对我来说更有意义)

此外,当我的应用程序写入数据库时,它使用极端的空间(80MB用于〜600整数值)
如何为我的嵌入式数据库使用“.h2.db”扩展名?


答案 1

自版本 1.4.177 Beta (2014-04-12) 起,此功能现已自动启用。

您可以通过添加和到数据库 URL 来禁用它;MV_STORE=FALSE;MVCC=FALSE

默认情况下,MV_STORE选项处于启用状态,因此它使用的是新的 MVStore 存储。默认情况下,MVCC 设置设置为与MV_STORE设置相同的值,因此默认情况下也会启用该设置。对于测试,可以通过附加“;MV_STORE=FALSE“和/或”;MVCC=FALSE“到数据库 URL。

http://www.h2database.com/html/changelog.html

您应该告诉我们,您使用的H2的确切版本。


答案 2

.mv.db 文件适用于 H2 即将推出的/测试版存储类型“MVStore”。

以下是 http://www.h2database.com/html/changelog.html

新的表引擎“org.h2.mvstore.db.MVTableEngine”,它在内部使用MVStore来保存数据。若要试用,请将“;D EFAULT_TABLE_ENGINE=org.h2.mvstore.db.MVTableEngine”附加到数据库 URL。这仍然是非常实验性的,并且尚不支持许多功能。数据存储在后缀为 .mv.db 的文件中


推荐