我正在使用以下打开:
db.open("db.kch#tune_defrag=10000", DB.OWRITER | DB.OCREATE)
我正在放置和删除元素。在执行结束时,数据库为“空”,count()函数返回0,因为我删除了所有元素。重复测试时为什么文件大小总是增加?是否可以运行类似“垃圾收集器”的东西来清理已删除的寄存器?如果我执行相同的测试100次,我有一个500 MB大小的数据库,即使我只有2个记录。
我试图把“tune_defrag = 10000”但我觉得它没有用。
Obs:唯一的寄存器小于1K,我不明白为什么寄存器在磁盘上占用了这么多空间。
感谢您的帮助
答案 0 :(得分:3)
试试这个:
db.kch#dfunit=8
这意味着KC会在检测到的每8个碎片中运行碎片整理,而Mikio实际上会推荐8个。
此处列出了可用选项,但它可能会使用一些润色。
答案 1 :(得分:2)
运行:
是我做的'db文件'调整大小'。我没有找到api访问权限,这就是为什么我使用kchashmgr实用程序使用shell命令执行此操作(显然,这可以从程序内部调用)。
答案 2 :(得分:1)
我没有使用过这个特定的数据库,但在其他一些数据库中,解决此问题的方法是将数据库复制到新数据库中,然后删除旧数据库。确保复制好后:)。
我已经将这个过程实现到生产系统中,只要它编码得非常好,它应该可以工作。
答案 3 :(得分:-1)
从粗略看一下kyoto文档,看来你没有办法调整大小或以其他方式清理已删除记录的数据库......或者真的以任何形式或形式管理它。
该项目看起来距离“生产就绪”还有很长的路要走。如果你真的想要实现它,我建议联系项目所有者(http://fallabs.com/),看看他们是否有任何需要实用功能的计划。
否则,我建议转移到另一个更成熟的nosql样式数据库。