当前位置:  开发笔记 > 前端 > 正文

内存中的Java DB

如何解决《内存中的JavaDB》经验,为你挑选了1个好方法。

是否有任何可以在嵌入模式下运行的Java数据库,其中一些表存储在内存中,同时从磁盘加载其他表?H2和JavaDB似乎是Java DB的两个领导者,我知道它们都有内存模式,但它们是否会让你将整个数据库加载到内存中,还是可以逐个表决?



1> Clark Bao..:

这是HSQL网站中提到的缓存表FAQ.

•HSQLDB是否将所有数据存储在内存中.内存不会因此而耗尽吗?

•仅在您需要时将所有数据存储在内存中.默认情况下,CREATE TABLE会生成内存表,因为这是较小表的最佳类型.对于较大的表,请使用CREATE CACHED TABLE并调整缓存大小以满足您的内存使用要求(最小为8MB).请参阅"指南"的"系统管理和部署问题"一章.HSQLDB没有简单的规则和强制措施,因为只使用几个设置就可以实现最大的灵活性.HSQLDB的一种流行用途是用于OLAP,ETL和数据挖掘应用程序,其中巨大的Java内存分配用于在内存中保存数百万行数据.

我认为缓存表已经足够强大,可以满足您的需求.

来自http://hsqldb.org/web/hsqlFAQ.html

缓存表和内存表之间的比较

MEMORY表和CACHED表通常用于数据存储.两者的区别如下:

当数据库启动并存储在内存中时,将从*.script文件中读取所有MEMORY表的数据.相反,在访问表之前,不会将高速缓存表的数据读入内存.此外,只有每个CACHED表的部分数据保存在内存中,从而允许表中包含的数据多于可以保存在内存中的数据.

当数据库以正常方式关闭时,MEMORY表的所有数据都将写入磁盘.相比之下,CACHED表中已更改的数据在操作期间和关闭时写出.

所有CACHED表的数据高速缓存的大小和容量都是可配置的.这使得可以允许CACHED表中的所有数据缓存在内存中.在这种情况下,访问速度很好,但比MEMORY表略慢.

对于普通应用程序,建议将MEMORY表用于少量数据,而将CACHED表用于大型数据集.对于速度至关重要且可用大量可用内存的特殊应用,MEMORY表也可用于大型表.

似乎H2和Derby(JavaDB)还不支持此功能.如果这不是事实,请纠正我.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有