H2数据库适合做大表的嵌入式数据库吗?

Is H2 database suitable as embedded database with large tables?

我们的应用程序目前使用 H2 作为嵌入式数据库,我们有以下场景:

到目前为止,我们已经使用 H2 1.5 年了,没有任何问题,但是我们在 Red Hat official documentation 中发现了以下关于 H2 的警告:

However, it should not be used in a production environment. It is a very small, self-contained datasource that supports all of the standards needed for testing and building applications, but is not robust or scalable enough for production use.

H2 的设计是否可靠,可以在这种情况下用于生产环境?

是否有任何基准支持这一点? H2 official performance benchmark 显示执行时间和性能使用情况,但不说明数据量。

嵌入式H2数据库是内存中的还是持久的?我主要关心的是故障转移。如果您的 JVM 出现故障,您将丢失自上次 Oracle 同步点以来的所有数据。

除此之外,嵌入式 H2 数据库只能在与您的应用程序相同的 JVM 中使用。因此,您将无法扩展到具有多个 JVM 的高可用性架构,每个 JVM 都有自己的 H2 数据库,并且您无法跨 JVM 共享该数据。

最后是堆的问题。如果您使用的是内存中的 JVM,那么您的堆将随着数据量的增加而增长,最终您可能 运行 内存不足并导致抖动,因为垃圾收集器试图阻止您 运行宁出堆。

其他限制可在此处找到: http://www.h2database.com/html/advanced.html#limits_limitations