【问题标题】:H2 database storage mechanismH2数据库存储机制
【发布时间】:2019-07-03 18:30:46
【问题描述】:

我在 junit 测试中使用了 H2 数据库,它工作得非常好。 但是,我对它的持久性属性有几个疑问:

  1. 关闭笔记本电脑后会发生什么?如果重新启动,表和数据是否会丢失?如果是,是否可以恢复?
  2. H2 是否使用事务日志将数据持久化到磁盘?我可以看到在我的用户目录中创建的数据库文件。我可以使用此文件将数据复制到另一个系统吗?
  3. 可以使用 H2 配置持久性/存储机制吗?

【问题讨论】:

    标签: java database junit h2 in-memory-database


    【解决方案1】:

    参见 H2 Features 页面。

    关于您的问题的简要总结:

    • H2 可以配置为使用in-memory 或基于磁盘的持久性。取决于您的选择,它会或不会在断电后继续存在。
    • 事务支持是READ COMMITTED
    • 您可以复制和重用该文件,我不会将其称为经典意义上的数据复制。但是,如果您有两个 H2 数据库,其中一个会关闭 f.ex。您可以从另一个复制文件并启动它。

    还要检查High Availability fpr H2 Database 项目。

    【讨论】:

    • 感谢亚历山大分享有用的信息。只是一个想法,我使用 H2 作为基于磁盘的持久性,因为我的连接字符串是 - jdbc:h2:file:~/。但它仍然更快。使用 H2 作为基于磁盘的持久性意味着像 MySQL 或 Oracle 等传统数据库一样使用它,对吗?那么,为什么它即使用作基于磁盘的也更快呢?它仍然使用 RAM 进行存储吗?
    • @SidharthaShankar 比什么更快?
    • 比 MySQL 等基于磁盘的传统数据库更快。
    • @SidharthaShankar 我认为这是一个与原始问题非常不同的问题,您应该发布一个新问题。
    猜你喜欢
    • 1970-01-01
    • 2017-06-16
    • 2012-07-27
    • 2019-12-14
    • 2017-07-24
    • 1970-01-01
    • 2012-03-16
    • 2017-02-02
    • 1970-01-01
    相关资源
    最近更新 更多