【问题标题】:How large can an H2 database be?H2数据库可以有多大?
【发布时间】:2015-01-24 02:35:43
【问题描述】:

H2 数据库可以有多大?我在 Clojure 中编写的 Web 应用程序中使用了 H2 数据库大约半年,并且数据库变得非常大:.h2.db 文件的当前大小为 143GB,其中一个表包含超过 330000 张图像。该应用程序相当稳定,偶尔会因 JVM 垃圾收集器和数据库错误(例如“丢失 lob 条目”)而暂停。当前的内存占用约为 6GB,这是可以接受的,到目前为止,我能够通过重建数据库从这些数据库错误中恢复。但是,我确实想知道,在迁移到 PostgreSQL 和 MySQL 等多线程数据库引擎之前,我实际上可以保持这种设置多久,我很想听听那些有使用大型 H2 数据库经验的人的意见。

【问题讨论】:

    标签: database clojure jvm h2


    【解决方案1】:

    我想报告一下,我最终在使用 H2 时遇到了主要的性能和稳定性问题并切换到 HyperSQL (http://hsqldb.org/)。对于我的 Web 应用程序,HyperSQL 比 H2 更稳定,实际上更快。 HyperSQL 对多线程的支持特别重要,而且我没有像使用 H2 那样使用 HyperSQL 损坏数据库。我还使我的应用程序与数据库无关,并与 MySQL 和 PostgreSQL 兼容,这两者在我的应用程序中看起来都比 H2 更稳定和响应更快。我知道 H2 并不是为像我这样庞大的数据库而设计的,但我认为我应该让其他读者了解运行大型 H2 数据库的一些后果。

    【讨论】:

      【解决方案2】:

      从技术上讲,这些是限制: http://h2database.com/html/advanced.html#limits_limitations

      但是,现实世界的限制将取决于您的应用程序。例如,如果您只能容忍 5 毫秒的延迟,那么一个没有索引的 4TB 数据库可能不会削减它。

      【讨论】:

      • 感谢您的链接。我知道这些限制,而且我的感觉是我会比理论限制更快地面临实际限制。我在这里谈论的是一个 Web 应用程序,因此 500 毫秒的延迟是可以接受的,即使它并不理想。此外,我的数据库已被适当索引。
      • 我想我的意思是我们不能真正给你你的限制很遗憾。如果您正在寻找人们告诉您他们已经做到了,您可能会得到一些,但它对您来说并不准确。例如,我使用 500-1000GB 范围内的 DB 运行了应用程序,这些应用程序的性能仍然相当不错,主要是 SQL,但也有一些 MongoDB 或内存中(有文件支持)的应用程序。
      • 这些“数据库在 500-1000GB 范围内”是否是 H2 数据库?我很想听听真实世界的大型 H2 数据库,即使它们与我自己的设置不太匹配。
      • 我的意思是把它放在我之前的评论中。不幸的是,没有,我从来没有在这么大的地方使用过 H2。你比我用过的任何 H2 DB 都大几个数量级,即使是用于测试。
      猜你喜欢
      • 2011-06-08
      • 1970-01-01
      • 2020-12-14
      • 2012-09-06
      • 1970-01-01
      • 2019-11-12
      • 1970-01-01
      • 2014-11-03
      相关资源
      最近更新 更多