pub struct GroupCommitBuffer { /* private fields */ }Expand description
Group commit buffer for batching WAL writes
Reduces fsync overhead by batching multiple transactions. Uses Little’s Law for adaptive batch sizing: N* = sqrt(2 × L_fsync × λ / C_wait)
Implementations§
Source§impl GroupCommitBuffer
impl GroupCommitBuffer
Sourcepub fn with_fsync_latency(
max_pending: usize,
max_wait_us: u64,
fsync_latency_us: u64,
) -> Self
pub fn with_fsync_latency( max_pending: usize, max_wait_us: u64, fsync_latency_us: u64, ) -> Self
Create with custom fsync latency estimate
Sourcepub fn add(&self, txn_id: u64) -> bool
pub fn add(&self, txn_id: u64) -> bool
Add a transaction to pending commits
Returns true if buffer should be flushed.
Sourcepub fn take_pending(&self) -> Vec<PendingCommit>
pub fn take_pending(&self) -> Vec<PendingCommit>
Take pending commits for flush
Sourcepub fn record_fsync_latency(&self, latency_us: u64)
pub fn record_fsync_latency(&self, latency_us: u64)
Record actual fsync latency for calibration
Sourcepub fn current_batch_size(&self) -> usize
pub fn current_batch_size(&self) -> usize
Get current adaptive batch size
Sourcepub fn current_arrival_rate(&self) -> f64
pub fn current_arrival_rate(&self) -> f64
Get current arrival rate estimate (req/s)
Sourcepub fn stats(&self) -> GroupCommitStats
pub fn stats(&self) -> GroupCommitStats
Get statistics for monitoring
Auto Trait Implementations§
impl !Freeze for GroupCommitBuffer
impl !RefUnwindSafe for GroupCommitBuffer
impl Send for GroupCommitBuffer
impl Sync for GroupCommitBuffer
impl Unpin for GroupCommitBuffer
impl UnsafeUnpin for GroupCommitBuffer
impl UnwindSafe for GroupCommitBuffer
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more