我是数据库新手,我喜欢从关系数据库(例如 Derby 数据库)获取数据是多么容易。我不喜欢的是占用了多少数据;我已经创建了一个包含两个表的数据库,总共向这些表写入了 130 条记录(每个表有 6 列),整个关系数据库作为一个文件夹保存在系统目录中,该文件夹总共包含大约 1914014 个字节!(假设我做对了算术......)到底是怎么回事导致如此巨大的内存请求?!//我还注意到文件夹中有一个log1.dat
文件log
恰好占用了1MB的数据。我通过 Notepad++ 查看了这个文件,发现它主要是NULL
字符。那是怎么回事?
问问题
1574 次
2 回答
4
Derby 需要跟踪您的数据库数据、重做日志和事务,以便您的数据库处于一致状态,甚至可以从 PC 崩溃中恢复。他还创建了大多数具有固定大小(如 1MB)的文件,以确保他以后不需要增加文件大小(性能问题并且不会将他的文件碎片化太多)。
在运行时或停止时,Derby 将清理其中的一些文件或重新组合它们并释放空间。
因此,总体而言,空间和文件是您使用数据库获得的权衡。
也许您可以通过一些 Derby 配置来更改其中的一些行为(我在文档中找不到任何合适的配置 :()。
于 2013-05-09T13:43:35.997 回答
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
于 2013-05-09T16:24:37.633 回答