如何将完整的内嵌H2内存数据库以二进制模式保存/加载到某个文件或目录中,以实现更快的加载。
我希望将其用于缓存数据,这样我就不必每次运行所有的创建表/插入子句代码。
如何将完整的内嵌H2内存数据库以二进制模式保存/加载到某个文件或目录中,以实现更快的加载。
我希望将其用于缓存数据,这样我就不必每次运行所有的创建表/插入子句代码。
你可以使用一个普通的(持久化的)数据库,而不是使用内存数据库。即使这样,你仍然可以使用内存表(创建内存表)。
将完全内存数据库持久化到磁盘的最简单方法是使用SCRIPT TO 'fileName' SQL语句。这将创建一个SQL脚本。数据以文本形式存储,听起来并不是最有效的解决方案。但通常瓶颈是磁盘,而不是格式化/解析文本。
另一种选择是创建另一个数据库,使用create linked table或link_schema函数将表与内存数据库关联,并使用create table as select将表持久化。
我发现可以使用比默认文件系统更快的H2虚拟文件系统。因此,我这样做:
//to save dump
connection.prepareStatement("SCRIPT TO 'memFS:data.sql'").execute();
//to load dump
connection.prepareStatement("RUNSCRIPT FROM 'memFS:data.sql'").execute();