2017-01-19 2 views
0

Wenn Sie in der LMDB einen früheren Eintrag in der gleichen Transaktion überschreiben, scheint der Speicherplatz des vorherigen Eintrags erst freigegeben zu sein, wenn die Daten festgeschrieben wurden. In meiner Anwendung bin ich auf einen Fall gestoßen, in dem LMDB nicht mehr genügend Speicherplatz hatte, weil ein bestimmter Eintrag so oft überschrieben wurde. Daher habe ich einfach die Datenbankgröße erhöht, um dieses Problem zu umgehen.LMDB verwendet zusätzlichen Speicherplatz beim Überschreiben von Einträgen

Gibt es eine Möglichkeit, freien Speicherplatz in LMDB freizugeben, um diese Situation zu verhindern?

Antwort

0

In lmdb gibt es keinen Verdichtungsmechanismus. Wenn es aktive Leser gibt, wenn ein Verfasser Änderungen an Einträgen vornimmt, werden diese Einträge in neue Seiten kopiert, um konsistente Lesevorgänge zu erhalten. Wenn die Leser fertig sind, werden die Seiten mit den alten Einträgen auf die freien Seiten zurückgesetzt, die für die nächsten Änderungen verfügbar sind. Um Speicher über den Verbrauch zu beschränken, müssen also mehrere kleine Schreibvorgänge ohne aktive Leser durchgeführt werden.

Verwandte Themen