Database 为什么空H2数据库的大小为2MB?

Database 为什么空H2数据库的大小为2MB?,database,h2,Database,H2,我正在构建一个使用嵌入式H2数据库的应用程序。我使用教程对其进行了测试,似乎一切正常: import java.sql.*; public class Test { public static void main(String[] a) throws Exception { Class.forName("org.h2.Driver"); Connection conn = DriverManager. get

我正在构建一个使用嵌入式H2数据库的应用程序。我使用教程对其进行了测试,似乎一切正常:

import java.sql.*;
public class Test {
    public static void main(String[] a)
            throws Exception {
        Class.forName("org.h2.Driver");
        Connection conn = DriverManager.
            getConnection("jdbc:h2:~/test", "sa", "");
        // add application code here
        conn.close();
    }
}

然而,我很好奇,在我的主目录中,我现在有一个“test.h2”文件和一个“test.lock”文件。为什么一个空数据库最终会达到2MB?它看起来有点大,我希望它最多是KB,因为它里面只有一些默认的空内存和一些存储数据的指令。2 MB是默认分配的内存吗?

当数据库打开时,空(或几乎空)数据库的数据库文件大小仅为2 MB。如果关闭该文件,则该文件将收缩

在某些文件系统上,调整文件大小的速度相对较慢。因此,H2分配的空间比它需要的要多:以减少调整大小操作的数量

扩展文件大小的精确算法将来可能会更改。目前,最小文件大小约为2MB。文件以35%的速度增长,但一次最多增长256 MB


关闭数据库时,文件会缩小到所需的实际大小。

从未注意到。我知道它在其信息模式中创建了一组表。我刚才注意到的一件事是帮助表,它包含321行用于各种命令的帮助文本。也许帮助文本足以使其达到此大小?在文档中看不到任何明显的答案。您是否连接到数据库?如果是,请断开连接,然后查看其大小。我注意到如果我这样做,那么大小会缩小到24kb。你使用的是什么版本的H2?@JavaDevil最新版本,我一周前下载的。我已断开连接,但仍然是2MB。(我使用的是Windows 64位)无法得到比这更权威的答案:)