Skip to main content

Crate xlog_stats

Crate xlog_stats 

Source
Expand description

GPU-resident statistics for query optimization and solver heuristics.

This crate provides statistics tracking for GPU-resident relations and columns that are used by the query optimizer and solver heuristics to make informed decisions about query execution strategies.

§Core Types

  • StatsManager: Central coordinator for all relation statistics and join selectivity tracking.
  • RelationStats: Tracks cardinality, memory usage, access patterns, and column-level statistics for GPU-resident relations.
  • ColumnStats: Per-column statistics including distinct counts, null counts, and value ranges for selectivity estimation.
  • JoinSelectivity: Models join behavior between relations for cardinality estimation.
  • PrefixDegreeStats and KeyHeatStats: WCOJ planner inputs for prefix fan-out and per-key skew.

§Usage

use xlog_stats::{StatsManager, RelationStats, ColumnStats};
use xlog_core::{RelId, ScalarType};

// Create a stats manager and register relations
let mut mgr = StatsManager::new();
mgr.register_relation(RelId(1));
mgr.register_relation(RelId(2));

// Update statistics
mgr.update_cardinality(RelId(1), 10_000);
mgr.update_cardinality(RelId(2), 5_000);

// Add column statistics
let mut col_stats = ColumnStats::new(0, ScalarType::I64);
col_stats.update_distinct(500);
col_stats.update_range(0, 1000);
mgr.add_column_stats(RelId(1), col_stats);

// Estimate join cardinality
let estimate = mgr.estimate_join_cardinality(RelId(1), RelId(2), &[0], &[0]);

// Record actual join result to improve future estimates
mgr.record_join_result(RelId(1), RelId(2), vec![0], vec![0], 50_000_000, 25_000);

// Track hot relations for LRU eviction
mgr.record_access(RelId(1));
let hot_rels = mgr.hot_relations(0.5);

Structs§

ColumnStats
Per-column statistics for optimizer cost estimation.
JoinSelectivity
Join selectivity model for estimating join output cardinality.
KeyHeatStats
Per-key heat/skew statistics for one relation column.
PrefixDegreeStats
Prefix fan-out statistics for one relation column.
RelationStats
GPU-resident relation statistics.
StatsManager
Manages GPU-resident statistics for all relations.
StatsSnapshot
Serializable snapshot of collected statistics.