为什么Derby数据库会占用这么多空间?

时间:2013-05-09 13:17:35

标签: java relational-database derby

我是数据库新手,我喜欢从关系数据库(例如Derby数据库)获取数据是多么容易。我不喜欢的是一个人占用了多少数据;我创建了一个包含两个表的数据库,为这些表写了总共130条记录(每个表有6列),整个关系数据库作为一个文件夹保存在总共大约1914014字节的文件夹中! (假设我做了正确的算法......)到底是怎么回事造成如此庞大的记忆要求?! //我还注意到log1.dat文件夹中有一个log文件,它占用了1MB的数据。我通过Notepad ++查看了这个文件,发现它主要是NULL个字符。这是怎么回事?

2 个答案:

答案 0 :(得分:4)

Derby需要跟踪您的数据库数据,重做日志和事务,以便您的数据库处于一致状态,甚至可以从PC崩溃中恢复。 此外,他还创建了大多数固定大小的文件(如1MB),以确保他以后不需要增加文件大小(性能问题并且不会将文件碎片化得太多)。

在运行时或停止时,Derby将清理其中一些文件或重新组合它们并释放空间。

总的来说,空间和文件是使用数据库所获得的权衡。

也许你可以通过一些Derby配置改变一些这种行为(我在doc :()中找不到任何合适的行为。

答案 1 :(得分:1)

2011年上次检查时,空的Derby数据库占用大约770 K的磁盘空间:http://apache-database.10148.n7.nabble.com/Database-size-larger-than-expected-td104630.html

log1.dat文件是您的事务日志,并记录数据库更改,以便在发生崩溃时(或者如果您的程序调用ROLLBACK)可以恢复数据库。

请注意,log1.dat是磁盘空间,而不是内存

如果您想了解Derby交易日志的基础知识,请从这里开始:http://db.apache.org/derby/papers/recovery.html