2012-03-07 127 views
14

如何以二进制模式将完整的嵌入式h2内存数据库保存/加载到某些文件或目录以加快加载速度。将内存中的H2数据库保存到磁盘

我想用它来缓存数据,所以我不必每次都运行create table/insert子句的所有行。

+1

你可以使用文件数据库还是内存版本?我假设你正在使用你没有提到的框架(例如Grails)进行自定义开发。 – Marc 2012-03-07 15:13:21

+0

这是一个不涉及框架的自定义项目。说实话,我不确定文件数据库的性能影响是什么,我想要的速度和数据总是适合内存,所以我认为内存数据库将是最快的。数据将只是查询,所以我不想要任何不必要的保存检查。 – mikkom 2012-03-07 15:33:12

+0

@marc使用'文件DB'是另一回事。如果可以用java或任何其他语言设置内存中测试数据集,然后对数据集进行备份并在每次测试后使用它恢复到初始状态,那么它在单元测试中将非常有用。 – 2013-04-19 20:49:13

回答

8

您可以使用常规(持久保存的)数据库,而不使用内存数据库。即使如此,您仍然可以使用内存表(创建内存表)。

将完全内存数据库保存到磁盘的最简单方法是使用SCRIPT TO 'fileName' SQL语句。这将创建一个SQL脚本。数据以文本形式存储,听起来不像是最有效的解决方案。然而,通常瓶颈是磁盘,而不是格式化/解析文本。

另一个选择是创建另一个数据库,链接表与(使用create linked tablelink_schema功能)的存储器内的数据库,然后使用create table as select坚持的表。

+0

插入子句是我目前所做的,对于1个文本需要一些时间,而不是io。对不起,但我想要二元期权。 – mikkom 2012-03-08 13:37:59

+0

更新了我的答案。对于SCRIPT:如果它不是IO,那么它是什么?您是否使用了剖析工具,例如内置剖析器? – 2012-03-08 15:43:55