Set geometry to something more reasonable

This commit is contained in:
Olivier 'reivilibre' 2022-06-26 18:32:53 +01:00
parent c303d85aaf
commit 83e55773b2

View File

@ -3,7 +3,8 @@ use crate::database::wrapped::WrappedTable;
use crate::wrapper::{ByteWrapper, ZeroCopyByteWrapper};
use anyhow::{ensure, Context};
use libmdbx::{
DatabaseFlags, Environment, EnvironmentFlags, Transaction, TransactionKind, WriteMap, RO, RW,
DatabaseFlags, Environment, EnvironmentFlags, Geometry, Transaction, TransactionKind, WriteMap,
RO, RW,
};
use std::marker::PhantomData;
use std::path::Path;
@ -18,8 +19,21 @@ impl Env {
let mut flags = EnvironmentFlags::default();
flags.no_sub_dir = true;
// TODO make the geometry more configurable.
let mut geom = Geometry::default();
// Don't stop the database growing until it hits 64 GiB.
// (The default is 1 MiB which is just not enough!)
geom.size = Some(1024 * 1024..64 * 1024 * 1024 * 1024);
// Grow 4 MiB at a time.
geom.growth_step = Some(4 * 1024 * 1024);
// Shrink 16 MiB at a time.
geom.shrink_threshold = Some(16 * 1024 * 1024);
// (Yes these numbers represent a large database).
let environment = Environment::new()
.set_max_dbs(256)
.set_geometry(geom)
.set_flags(flags)
.open(path)?;