SstFileManager

Struct SstFileManager 

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

SstFileManager is used to track SST files in the database and control their deletion rate.

All SstFileManager public functions are thread-safe.

SstFileManager can be used to:

  • Set a limit on the total size of SST files. Once the limit is exceeded, writes will fail with a specific status.
  • Control the deletion rate of obsolete files to avoid saturating the disk bandwidth with deletion operations.
  • Track the total size of SST files and the total size of trash files.

See also: rocksdb/include/rocksdb/sst_file_manager.h

Implementations§

Source§

impl SstFileManager

Source

pub fn new(env: &Env) -> Result<Self, Error>

Creates a new SstFileManager with the given environment.

§Arguments
  • env - The environment to use for file operations
§Errors

Returns an error if the SstFileManager cannot be created.

Source

pub fn set_max_allowed_space_usage(&self, max_allowed_space: u64)

Sets the maximum allowed space usage for SST files.

If the total size of SST files exceeds this limit, writes will fail. Setting this to 0 disables the limit.

§Arguments
  • max_allowed_space - Maximum allowed space in bytes (0 = unlimited)
Source

pub fn set_compaction_buffer_size(&self, compaction_buffer_size: u64)

Sets the size of the compaction buffer.

The compaction buffer is used to reserve space for compaction output. If set, the SstFileManager will consider this space as used when checking against the maximum allowed space.

§Arguments
  • compaction_buffer_size - Size of the compaction buffer in bytes
Source

pub fn is_max_allowed_space_reached(&self) -> bool

Returns true if the total size of SST files exceeded the maximum allowed space.

Source

pub fn is_max_allowed_space_reached_including_compactions(&self) -> bool

Returns true if the total size of SST files plus compaction buffer size exceeded the maximum allowed space.

Source

pub fn get_total_size(&self) -> u64

Returns the total size of all tracked SST files in bytes.

Source

pub fn get_delete_rate_bytes_per_second(&self) -> i64

Returns the current delete rate in bytes per second.

Returns 0 if there is no rate limiting.

Source

pub fn set_delete_rate_bytes_per_second(&self, delete_rate: i64)

Sets the delete rate limit in bytes per second.

This controls how fast obsolete files are deleted. Setting this to 0 disables rate limiting and files will be deleted immediately.

§Arguments
  • delete_rate - Delete rate in bytes per second (0 = unlimited)
Source

pub fn get_max_trash_db_ratio(&self) -> f64

Returns the maximum trash to DB size ratio.

If the trash size exceeds this ratio of the total DB size, files will be deleted immediately regardless of the delete rate limit.

Source

pub fn set_max_trash_db_ratio(&self, ratio: f64)

Sets the maximum trash to DB size ratio.

When the size of pending-deletion files (trash) exceeds this ratio relative to the database size, files will be deleted immediately regardless of the delete rate limit.

§Arguments
  • ratio - Maximum trash to DB size ratio (e.g., 0.25 = 25%)
Source

pub fn get_total_trash_size(&self) -> u64

Returns the total size of trash files (files pending deletion) in bytes.

Trait Implementations§

Source§

impl Clone for SstFileManager

Source§

fn clone(&self) -> SstFileManager

Returns a duplicate of the value. Read more
1.0.0 · 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.