ARCHITECTURE.md
concurrent-map crate.parking_lot crate. As a Db grows, leaf contention tends to go down in most use cases. But this may be revisited over time if many users have issues with RwLock-related contention. Avoiding full RCU for updates on the leaves results in many of the performance benefits over sled 0.34, with significantly lower memory pressure.ebr crate.Config.entry_cache_percent. This is handled by the extracted cache-advisor crate. The overall cache size is set by the Config.cache_size configurable.Db::flush (This is also called periodically in the background by a flusher thread)Db::apply_batch are either 100% visible or 0% visible after crash recovery. If it was followed by a flush that returned Ok(()) it is guaranteed to be present.Db::flush advances the current flush epoch by 1.Db::flush.Config.zstd_compression_level).(low_key, slab_slot) tuples that are initially written to a log, but eventually merged into a simple snapshot file for the metadata store once the log becomes larger than the snapshot file.BinaryHeap of the slot that it belongs to so that it may be reused in future atomic write batches.Ok(()) to the caller of Db::flush.LEAF_FANOUT const generic on the high-level Db struct (default 1024), the smaller the in-memory leaf index and the better the compression ratio of the on-disk file, but the more expensive it will be to read the entire leaf off of disk and decompress it.LEAF_FANOUT relatively low to make the system behave more like an Index+Log architecture, but overall disk size will grow and write performance will decrease.LEAF_FANOUT after writing data is not supported.