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