pub struct QueryTuning {Show 14 fields
pub sort_run_size: usize,
pub stream_chunk_size: usize,
pub aggregate_scan_cap: usize,
pub arrow_batch_max_rows: usize,
pub arrow_batch_max_bytes: usize,
pub bitmap_over_fetch_factor: usize,
pub bfs_memory_budget_bytes: usize,
pub bfs_bytes_per_node: usize,
pub doc_cache_entries: usize,
pub columnar_flush_threshold: usize,
pub compaction_target_bytes: usize,
pub groupby_max_groups_in_mem: usize,
pub aggregate_chunk_size: usize,
pub max_scan_result_bytes: usize,
}Expand description
Query execution tuning for the Data Plane executor.
Fields§
§sort_run_size: usize§stream_chunk_size: usize§aggregate_scan_cap: usize§arrow_batch_max_rows: usize§arrow_batch_max_bytes: usize§bitmap_over_fetch_factor: usize§bfs_memory_budget_bytes: usize§bfs_bytes_per_node: usize§doc_cache_entries: usizePer-core LRU document cache size (number of entries).
See DocCache::new in core_loop.rs.
columnar_flush_threshold: usizeColumnar memtable flush threshold in rows.
See nodedb_columnar::memtable::DEFAULT_FLUSH_THRESHOLD.
compaction_target_bytes: usizeTarget segment size in bytes after compaction.
See nodedb::storage::compaction::CompactionConfig.
groupby_max_groups_in_mem: usizeMaximum number of distinct group keys held in memory during GROUP BY before the spiller triggers a spill run to disk. When exceeded, the current in-memory accumulator map is serialized to a temp file and the map is cleared. All spill runs are k-way merged at finalize time. Default: 1_000_000.
aggregate_chunk_size: usizeNumber of documents the streaming aggregate processes per chunk before checking whether a spill run should be triggered. A smaller value reduces peak memory at the cost of more frequent spill checks; a larger value amortises check overhead at the cost of holding more documents in flight between checks. The LIMIT clause is applied after all chunks are accumulated, so this knob does not affect query correctness. Default: 10_000.
max_scan_result_bytes: usizeMaximum total bytes a single unbounded (no-LIMIT) document scan may
materialize on a Data Plane core before the handler aborts with a
deterministic ResourcesExhausted error. A SELECT * FROM <coll>
without a LIMIT is no longer silently truncated; instead it returns
every row that fits this budget and surfaces a typed error (suggesting
the client add a LIMIT) if the result would exceed it. This is a
per-core, per-query bound that sits below the Control-Plane aggregate
network.max_query_result_bytes ceiling.
Default: 512 MiB.
Trait Implementations§
Source§impl Clone for QueryTuning
impl Clone for QueryTuning
Source§fn clone(&self) -> QueryTuning
fn clone(&self) -> QueryTuning
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 QueryTuning
impl Debug for QueryTuning
Source§impl Default for QueryTuning
impl Default for QueryTuning
Source§impl<'de> Deserialize<'de> for QueryTuning
impl<'de> Deserialize<'de> for QueryTuning
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for QueryTuning
impl RefUnwindSafe for QueryTuning
impl Send for QueryTuning
impl Sync for QueryTuning
impl Unpin for QueryTuning
impl UnsafeUnpin for QueryTuning
impl UnwindSafe for QueryTuning
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.