如何以二进制模式将完整的嵌入式h2内存数据库保存/加载到某个文件或目录,以加快加载速度。
我想用它来缓存数据,所以我不必每次都运行create table / insert子句的所有行。
答案 0 :(得分:9)
您可以使用常规(持久)数据库,而不是使用内存数据库。即使这样,你仍然可以使用内存表(创建内存表)。
将完全内存数据库保存到磁盘的最简单方法是使用SCRIPT TO 'fileName' SQL语句。这将创建一个SQL脚本。数据以文本形式存储,这听起来不是最有效的解决方案。然而,通常瓶颈是磁盘,而不是格式化/解析文本。
另一种选择是创建另一个数据库,将表与内存数据库链接(使用create linked table或link_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();