我正在构建一个使用嵌入式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是否已分配默认内存?
答案 0 :(得分:4)
数据库打开时,空(或几乎为空)数据库的数据库文件大小仅为2 MB。如果它关闭,文件会缩小。
在某些文件系统上,调整文件大小相对较慢。因此,H2分配的空间超出了它所需的空间:减少调整大小操作的数量。
扩展文件大小的确切算法可能会在将来发生变化。目前,最小文件大小约为2 MB。该文件增长率为35%,但一次最多为256 MB。
关闭数据库时,文件会缩小到所需的实际大小。