在LMDB中,如果覆盖同一事务中的前一个条目,则似乎在提交数据之前不会释放上一个条目的空间。在我的应用程序中,我遇到了一个LMDB空间不足的情况,因为特定的条目被覆盖了很多次,所以我只是增加了数据库大小来解决这个问题。
有没有办法释放LMDB中未使用的空间以防止这种情况发生?
答案 0 :(得分:0)
lmdb中没有压缩机制。如果作者对条目执行修改时存在活动读取器,则会将这些条目复制到新页面以保持一致的读取。读者完成后,旧条目页面将返回到空闲页面,可供下一次修改。 因此,为了限制存储过度消耗,必须在没有活动读取器的情况下执行多次小写操作