Skip to main content

OccLockBuckets

Struct OccLockBuckets 

Source
pub struct OccLockBuckets(/* private fields */);
Expand description

A pool of mutex locks used to validate optimistic transactions.

Only consulted when the validation policy is OccValidationPolicy::ValidateParallel. Hand it to OptimisticTransactionDBOptions::set_shared_lock_buckets to make several databases validate against one pool instead of each allocating its own.

Cloning is cheap and produces another handle to the same pool. The pool itself lives as long as any handle or any options value or database that was given one, so it is fine to drop every Rust handle right after the set_shared_lock_buckets call.

Implementations§

Source§

impl OccLockBuckets

Source

pub fn new(bucket_count: usize, cache_aligned: bool) -> Self

Allocates a pool of bucket_count locks.

More buckets mean less contention between transactions validating at the same time, and more memory. cache_aligned pads each lock out to a cache line, which avoids false sharing between neighbouring buckets at the cost of more memory again. RocksDB has historically used false here.

§Panics

Panics if RocksDB could not allocate the pool.

Source

pub fn approximate_memory_usage(&self) -> usize

Estimates how much memory this pool occupies, in bytes.

Trait Implementations§

Source§

impl Clone for OccLockBuckets

Source§

fn clone(&self) -> OccLockBuckets

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.