将内存H2数据库保存到磁盘

时间:2012-03-07 11:54:19

标签: load save h2 embedded-database in-memory

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

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

2 个答案:

答案 0 :(得分:9)

您可以使用常规(持久)数据库,而不是使用内存数据库。即使这样,你仍然可以使用内存表(创建内存表)。

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

另一种选择是创建另一个数据库,将表与内存数据库链接(使用create linked tablelink_schema函数),然后使用create table as select来保存表。

答案 1 :(得分:0)

我发现可以使用比默认FS快得多的H2虚拟FS。因此,我这样做:

//to save dump
connection.prepareStatement("SCRIPT TO 'memFS:data.sql'").execute();
//to load dump
connection.prepareStatement("RUNSCRIPT FROM 'memFS:data.sql'").execute();