public static CellarSize EstimateSize(Tx tx) { var chunkCount = 0; var diskSize = 0L; var byteSize = 0L; var records = 0L; foreach (var pair in Lmdb.ListChunks(tx)) { chunkCount += 1; var dto = pair.Value; diskSize += dto.GetCompressedDiskSize(); byteSize += dto.GetUncompressedByteSize(); records += dto.GetChunkRecords(); } var buffer = Lmdb.GetBuffer(tx, 0); if (buffer != null) { diskSize += buffer.GetBufferMaxBytes(); byteSize += buffer.GetBufferPos(); records += buffer.GetBufferRecords(); } return(new CellarSize(chunkCount, diskSize, byteSize, records)); }
void LoadData() { if (!Directory.Exists(_folder)) { return; } using (var env = LmdbEnv.CreateDb(_folder, 1024 * 1024, EnvironmentOpenFlags.ReadOnly)) { using (var tx = env.Read()) { _chunks = Lmdb.ListChunks(tx).Select(c => c.Value).ToArray(); _buffer = Lmdb.GetBuffer(tx, 0); _cellar = Lmdb.GetCellarMeta(tx, 0, new Lmdb.CellarDto()); ByteSize = Cellar.EstimateSize(tx).ByteSize; } } _maxKeySize = _cellar.GetCellarMaxKeySize(); _maxValueSize = _cellar.GetCellarMaxValSize(); }