3
创建lmdb环境时,我可以指定地图大小。有没有办法在任何时候确定地图大小用完了多少?lmdb:如何确定剩余空间?
换句话说,我需要知道剩下多少空闲空间才能解决空间不足的问题。
我唯一能想到的就是浏览所有数据库,并使用mdb_env_stat来获取分支,页面和溢出页面的数量。总结所有dbs(时间页面大小)并与当前地图大小进行比较。这是计算使用空间的正确方法吗?
创建lmdb环境时,我可以指定地图大小。有没有办法在任何时候确定地图大小用完了多少?lmdb:如何确定剩余空间?
换句话说,我需要知道剩下多少空闲空间才能解决空间不足的问题。
我唯一能想到的就是浏览所有数据库,并使用mdb_env_stat来获取分支,页面和溢出页面的数量。总结所有dbs(时间页面大小)并与当前地图大小进行比较。这是计算使用空间的正确方法吗?
这确实是我使用的方法(也是唯一可以找到的方法)。
对于每一个数据库:
MDB_stat stat;
mdb_stat(d->transaction, d->dbi, &stat);
auto dbSize = stat.ms_psize * (stat.ms_leaf_pages + stat.ms_branch_pages + stat.ms_overflow_pages);