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

时间:2014-01-06 02:35:08

标签: 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.
            getConnection("jdbc:h2:~/test", "sa", "");
        // add application code here
        conn.close();
    }
}

我很好奇但是,在我的主目录中,我现在有一个“test.h2”文件和一个“test.lock”文件。为什么空数据库最终为2 MB?它似乎有点大,我希望最多可以使用KB,因为其中的所有内容都是默认的空内存和一些用于存储数据的指令。 2 MB是否已分配默认内存?

1 个答案:

答案 0 :(得分:4)

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

在某些文件系统上,调整文件大小相对较慢。因此,H2分配的空间超出了它所需的空间:减少调整大小操作的数量。

扩展文件大小的确切算法可能会在将来发生变化。目前,最小文件大小约为2 MB。该文件增长率为35%,但一次最多为256 MB。

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