2017-05-04 46 views
2

现在H2 1.4已经不在beta版了,我想将我的旧版1.3.175数据库迁移到1.4.195。什么是从H2 1.3.175迁移到1.4.195的推荐方式

背景信息:

  • 在文档,database upgrade没有提到1.4呢。
  • roadmap仍列出“从1.3数据库自动迁移到1.4”。作为“计划改变”。
  • MVStore的current state仍被标记为“实验”。

那么,什么是推荐的迁移方式?

其他方面/奖金问题:

我应该能够MVStore或PageStore(优点/缺点)坚守?哪一个能够提供更好的性能(多线程对我来说并不重要),哪一个更好的稳定性,尤其是对OutOfMemoryErrors的弹性?

回答

4

使用1.3.175创建的数据库可以被读取并使用1.4.195打开,无需任何额外的工作。 H2会自动检测到它正在使用Page Store并将其视为此类。这样做不会有问题。

这样做的好处是,虽然MVStore正在开发中,但Page Store不断获得性能改进和错误修复。因此H2与Page Store已经成为一个非常稳定的数据库存储。

目前还没有将数据库从使用Page Store转换为使用MVStore的自动升级过程。如果你确实想这样做,你需要手动完成。使用最新的H2 Jar,使用H2的SCRIPT命令从1.3数据库中导出SQL,然后使用RUNSCRIPT创建一个1.4.195的新创建的数据库。

如果您的H2 JDBC URL没有明确指定;mv_store=false,请注意H2将首先查看页面存储数据库是否已存在。如果没有,那么它会创建一个MVStore数据库。这对你,你的应用和你的用户来说是无缝的。你会注意到唯一的表面差异是磁盘上的数据库文件具有不同的文件扩展名。

最后,一个建议。如果您的客户数据库很大,请考虑仅使用页面存储。我是H2的重量级用户。 (我在H2上构建的商业产品有成千上万的用户,他们通常拥有数千GB的数据库。)尽管我使用最新的H2 Jar,但我仍然为所有客户使用页面存储。当数据库变大时,MVStore仍然存在一些性能问题。随着时间的推移,我预计问题的原因将得到确认和修正。

+0

我在想 - 如果我坚持使用PageStore,是否需要转储并恢复数据库,因为在从1.x升级到1.y时,通常会在H2环境中推荐它? – hendrik

+1

@hendrik,在1.3.175和1.4.191之间,不需要转储和恢复。您阅读的建议对于从1.1或1.2移到更重要。 –

+0

PageStore是否支持1.4版本的MVCC?并且是否启用了多线程?我们最初的观察表明多线程未启用。 我们希望启用MVCC和多线程BOTH,所以我猜想当从1.3迁移到1.4时,我们需要手动使用H2的SCRIPT命令? –

相关问题