Struct ckb_rocksdb::Cache
source · pub struct Cache(/* private fields */);
Implementations§
source§impl Cache
impl Cache
sourcepub fn new_lru_cache(capacity: size_t) -> Cache
pub fn new_lru_cache(capacity: size_t) -> Cache
Creates an LRU cache with capacity in bytes.
sourcepub fn new_hyper_clock_cache(
capacity: size_t,
estimated_entry_charge: size_t
) -> Cache
pub fn new_hyper_clock_cache( capacity: size_t, estimated_entry_charge: size_t ) -> Cache
Creates a HyperClockCache with capacity in bytes.
estimated_entry_charge
is an important tuning parameter. The optimal
choice at any given time is
(cache.get_usage() - 64 * cache.get_table_address_count()) / cache.get_occupancy_count()
, or approximately cache.get_usage() / cache.get_occupancy_count()
.
However, the value cannot be changed dynamically, so as the cache composition changes at runtime, the following tradeoffs apply:
- If the estimate is substantially too high (e.g., 25% higher), the cache may have to evict entries to prevent load factors that would dramatically affect lookup times.
- If the estimate is substantially too low (e.g., less than half), then meta data space overhead is substantially higher.
The latter is generally preferable, and picking the larger of block size and meta data block size is a reasonable choice that errs towards this side.
sourcepub fn get_pinned_usage(&self) -> usize
pub fn get_pinned_usage(&self) -> usize
Returns pinned memory usage
sourcepub fn set_capacity(&mut self, capacity: size_t)
pub fn set_capacity(&mut self, capacity: size_t)
Sets cache capacity
Trait Implementations§
Auto Trait Implementations§
impl RefUnwindSafe for Cache
impl Send for Cache
impl Sync for Cache
impl Unpin for Cache
impl UnwindSafe for Cache
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more