2017-01-19 6 views
0

В LMDB, если вы перезаписываете предыдущую запись в той же транзакции, кажется, что пространство предыдущей записи не было выпущено до тех пор, пока данные не будут зафиксированы. В моем приложении я столкнулся с ситуацией, когда LMDB закончил пространство, потому что определенная запись была перезаписана столько раз, поэтому я просто увеличил размер базы данных, чтобы обойти эту проблему.LMDB, используя дополнительное пространство при перезаписывании записей

Есть ли способ освободить неиспользуемое пространство в LMDB, чтобы предотвратить эту ситуацию?

ответ

0

В lmdb отсутствует механизм уплотнения. Если есть активные читатели, когда автор выполняет изменения в записях, эти записи копируются на новые страницы, чтобы сохранить согласованные чтения. Когда читатели сделаны, старые страницы статей возвращаются на бесплатные страницы, доступные для следующих модификаций. Таким образом, чтобы ограничить хранение по сравнению с потреблением, нужно выполнить несколько небольших операций записи без активных считывателей.