20

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

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

4

2 回答 2

9

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

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

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

于 2012-03-07T19:18:34.230 回答
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();
于 2020-10-23T14:30:20.603 回答