<分区>
是否有任何 Java 数据库可以在嵌入式模式下运行,其中一些表存储在内存中,同时从磁盘加载其他表? H2 和 JavaDB 似乎是 Java 数据库的两个领导者,我知道它们都有内存模式,但它们是否会让您将整个数据库加载到内存中,还是您可以逐个表决定?
<分区>
是否有任何 Java 数据库可以在嵌入式模式下运行,其中一些表存储在内存中,同时从磁盘加载其他表? H2 和 JavaDB 似乎是 Java 数据库的两个领导者,我知道它们都有内存模式,但它们是否会让您将整个数据库加载到内存中,还是您可以逐个表决定?
最佳答案
这是HSQL网站上提到的缓存表FAQ。
•HSQLDB是否将所有数据存储在内存中。内存不会因此耗尽吗?
•它仅在您需要时才将所有数据存储在内存中。默认情况下,CREATE TABLE 生成内存表,因为这是较小表的最佳类型。对于较大的表,使用 CREATE CACHED TABLE 并调整缓存大小以满足您的内存使用要求(低至 8MB 左右)。请参阅指南的系统管理和部署问题一章。没有简单的规则,也没有强加给 HSQLDB 的部分,因为仅使用几个设置就可以实现最大的灵 active 。 HSQLDB 的一个流行用途是用于 OLAP、ETL 和数据挖掘应用程序,在这些应用程序中,巨大的 Java 内存分配用于在内存中保存数百万行数据。
我认为缓存表已经足够强大,可以满足您的需求。
来自 http://hsqldb.org/web/hsqlFAQ.html
缓存表和内存表的对比
MEMORY表和CACHED表一般用于数据存储。两者的区别如下:
所有MEMORY表的数据都是在数据库启动时从*.script文件中读取并存储在内存中的。相反,在访问表之前,缓存表的数据不会读入内存。此外,每个 CACHED 表只有部分数据保存在内存中,允许表包含比内存中可以保存的更多的数据。
当数据库以正常方式关闭时,MEMORY 表的所有数据都被写入磁盘。相比之下,CACHED 表中已更改的数据在运行期间和关闭时被写出。
所有缓存表的数据缓存大小和容量都是可配置的。这使得可以将 CACHED 表中的所有数据都缓存在内存中。在这种情况下,访问速度不错,但比 MEMORY 表稍慢。
对于一般应用程序,建议将 MEMORY 表用于少量数据,将 CACHED 表用于大型数据集。对于速度至上且有大量空闲内存可用的特殊应用程序,MEMORY 表也可用于大型表。
H2 和 Derby(JavaDB) 似乎还不支持这个特性。如果事实并非如此,请纠正我。
关于database - 内存中 Java DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1932254/