Beispiel #1
0
        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));
        }
Beispiel #2
0
        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();
        }