pub struct ExecutionSummaryCounts {
pub iops: usize,
pub requests: usize,
pub bytes_read: usize,
pub indices_loaded: usize,
pub parts_loaded: usize,
pub index_comparisons: usize,
pub all_counts: HashMap<String, usize>,
pub all_times: HashMap<String, usize>,
}Fields§
§iops: usizeThe number of I/O operations performed
requests: usizeThe number of requests made to the storage layer (may be larger or smaller than iops depending on coalescing configuration)
bytes_read: usizeThe number of bytes read during the execution of the plan
indices_loaded: usizeThe number of top-level indices loaded
parts_loaded: usizeThe number of index partitions loaded
index_comparisons: usizeThe number of index comparisons performed (the exact meaning depends on the index type)
all_counts: HashMap<String, usize>Additional metrics for more detailed statistics. These are subject to change in the future and should only be used for debugging purposes.
Newer metrics (e.g. INDEX_CACHE_HITS_METRIC, INDEX_CACHE_MISSES_METRIC) are added
here rather than as pub fields, so this struct stays backwards compatible for callers
that construct or destructure it. Prefer the typed accessors below.
all_times: HashMap<String, usize>Additional time metrics for more detailed statistics, stored in nanoseconds. These are subject to change in the future and should only be used for debugging purposes.
Implementations§
Source§impl ExecutionSummaryCounts
impl ExecutionSummaryCounts
Sourcepub fn index_cache_hits(&self) -> usize
pub fn index_cache_hits(&self) -> usize
Number of index cache page lookups where the loader was not executed (per-page granularity).
A “hit” is any page-level lookup at an instrumented cache boundary that did not run the loader on this call. That covers both a true cache hit on an already-populated entry and a coalesced concurrent load where an in-flight loader started by a different caller produced the value.
Instrumented boundaries in this release:
BTree page, IVF partition (v2, write_cache=true scan path), inverted
posting list (grouped and per-token), inverted per-token metadata
(PostingMetadataKey), inverted phrase positions (PositionKey),
bitmap posting (Equals / Range / IsIn), ngram posting, and rtree page
/ null slot.
Caveats:
- IVF v2 streaming scans and legacy v1 IVF partitions run
load_partitionwithwrite_cache=false. Those loads always execute the loader and never write the result back, so they are reported as a miss on every call. SeeSelf::index_cache_hit_ratio. - A cold posting-list lookup on the grouped inverted layout can record up to two misses (posting-list group + per-token metadata) for a single term.
Other index cache boundaries such as HNSW graph pages and quantizer
codebooks are not yet instrumented; a scan that only touches those
paths returns 0 here.
Sourcepub fn index_cache_misses(&self) -> usize
pub fn index_cache_misses(&self) -> usize
Number of index cache page lookups that had to execute the loader (per-page granularity).
A “miss” is any page-level lookup at an instrumented cache boundary
where the loader ran, i.e. the page was not resident and had to be
materialised (typically from storage). See
Self::index_cache_hits for the paired counter and the list of
instrumented boundaries.
Sourcepub fn index_cache_hit_ratio(&self) -> f32
pub fn index_cache_hit_ratio(&self) -> f32
Ratio of index cache hits to total lookups. Returns 0.0 when no lookups
were recorded in this scan.
This ratio only reflects paths that write their result back to the
index cache. Streaming scans (IVF v2 write_cache=false and legacy v1
IVF load_partition_stream) intentionally bypass the cache and are
counted as misses on every call, so a workload dominated by streaming
vector scans will report a hit ratio near 0.0 regardless of cache
size.
Trait Implementations§
Source§impl Clone for ExecutionSummaryCounts
impl Clone for ExecutionSummaryCounts
Source§fn clone(&self) -> ExecutionSummaryCounts
fn clone(&self) -> ExecutionSummaryCounts
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ExecutionSummaryCounts
impl Debug for ExecutionSummaryCounts
Source§impl Default for ExecutionSummaryCounts
impl Default for ExecutionSummaryCounts
Source§fn default() -> ExecutionSummaryCounts
fn default() -> ExecutionSummaryCounts
impl Eq for ExecutionSummaryCounts
Source§impl PartialEq for ExecutionSummaryCounts
impl PartialEq for ExecutionSummaryCounts
impl StructuralPartialEq for ExecutionSummaryCounts
Auto Trait Implementations§
impl Freeze for ExecutionSummaryCounts
impl RefUnwindSafe for ExecutionSummaryCounts
impl Send for ExecutionSummaryCounts
impl Sync for ExecutionSummaryCounts
impl Unpin for ExecutionSummaryCounts
impl UnsafeUnpin for ExecutionSummaryCounts
impl UnwindSafe for ExecutionSummaryCounts
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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> ⓘ
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> ⓘ
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