如何限制多个嵌入式 HSQLDB 数据库实例整体使用的 RAM?

Posted

技术标签:

【中文标题】如何限制多个嵌入式 HSQLDB 数据库实例整体使用的 RAM?【英文标题】:How to limit the RAM used by multiple embedded HSLQDB DB instances as a whole? 【发布时间】:2013-04-06 13:31:43 【问题描述】:

给定:

    HSQLDB 嵌入式 50 个不同的数据库(我有 50 个不同的数据源) 所有数据库均为file:/ 类型 所有表都已缓存 所有嵌入式数据库实例组合允许使用的 RAM 量是有限的,并在 java 进程启动时给出。 LOG 文件被禁用(崩溃时无需恢复)

我的理解是单个数据库实例使用的 RAM 由以下几部分组成:

所有表的缓存(我所有的表都是CACHED) 数据库实例内部状态

此外,据我所知,我有这两个属性来控制单个数据库实例的缓存总大小:

设置文件缓存大小 设置文件缓存行

但是,它们仅控制数据库实例使用的 RAM 的缓存部分。另外,它们是针对每个数据库实例的,而我想将所有实例作为一个整体进行限制。

那么,我想知道是否可以指示 HSQLDB 保持在包括所有数据库实例在内的总 RAM 量内?

【问题讨论】:

【参考方案1】:

您只能限制每个数据库实例的 CACHE 内存使用。每个实例相互独立。

您可以减少每个数据库的 CACHE SIZE 和 CACHE ROWS 以适应您的应用程序。

HSQLDB 不使用很多其他内存,但是当它使用时,它会使用 JVM 的内存,这些内存在不同的数据库实例之间共享。

【讨论】:

是否有可能以某种方式计算 hsqldb 使用的 RAM 量? TaskMgr对我没有帮助,因为它报告了java进程占用的RAM,其中hsqldb只是其中的一部分。 没有。因为它们都在同一个 Java 进程中。

以上是关于如何限制多个嵌入式 HSQLDB 数据库实例整体使用的 RAM?的主要内容,如果未能解决你的问题,请参考以下文章

HSQLDB:为现有数据库启用 LOB 压缩

如何在 HSQLDB 中创建多个目录

如何在嵌入式模式下自动创建 hsqldb

Eclipse 和 HSQLDB: 将关系数据库服务器嵌入到 Eclipse 中,第 2 部分

备份和恢复 HsqlDb 嵌入式文件(非数据库)

HSQLDB:在应用程序 jar 文件中嵌入文本表