Expand description
ColumnChunk: differential’s Chunk over Column-shaped updates.
A chunk is a sorted, consolidated run of (D, T, R) updates in the flat
columnar layout, in one of two homes:
- Resident: an
Rc-sharedColumnon the heap. Fresh input, merge output, and small tails live here. - Spilled: the serialized body in the process
Pool, with the record count and the first and last data items resident. The pool owns residency from there, with slots under a memory budget and compression and device pageout under pressure, and a body that dies before pressure reaches it is freed without I/O.
Reads of a spilled body are copy-out and scoped to the call that needs
them, the contract that lets the pool evict with no reader accounting
(see mz_ore::pool).
Spilling happens in Chunk::settle, the trait’s designated commit point:
chunks moved to settled output are handed to the pool when spilling is
enabled (see set_compute_spill_enabled and set_storage_spill_enabled
for how the per-commit destination resolves). Grading is by serialized
bytes, the ship size Column already targets, rather than by the
record-count TARGET, since record count does not bound bytes for
variable-width data.
Chunks whose data is a (key, val) pair additionally implement
UnloadChunk, the bulk-read capability: sorted probe keys in, matching
updates appended to caller-owned staging, with locate answered from the
resident fence metadata so a probe set faults only the chunk bodies it
actually touches.
Structs§
- Chunk
Chunker - A chunker for
arrange_coreoverColumnChunks: sorts and consolidates raw input columns through aColumnChunkerand wraps its output chunks. - Lz4Codec
- The chunk-side
ExtentCodec: a little-endianu32body-length prefix followed by one lz4 block, the framinglz4_flex::block::compress_prepend_sizeproduces. Every chunk consumer passesLZ4_CODECat insert; the pool itself has no codec opinion. - Spilled
Body - A spilled chunk body: the serialized column in the pool, plus the resident
metadata every
Chunkmust answer without fetching. That metadata is the record count, the first and last data items (the fence entriesUnloadChunk::locateconsults), and the time boundsextractconsults to pass frontier-disjoint chunks through without loading them. - Unchunk
Builder - A batch builder over
ColumnChunkinput that delegates to a builder overColumninput, loading each chunk’s body as it is pushed.
Enums§
- Column
Chunk - A sorted, consolidated run of
(D, T, R)updates, resident or spilled.
Statics§
- LZ4_
CODEC - The
Lz4Codecinstance chunk consumers pass toPool::insert_with.
Functions§
- set_
compress_ min_ depth - Set the youngest generational depth whose spilled bodies are compressed.
- set_
compute_ spill_ enabled - Enable or disable chunk spilling on behalf of compute’s arrangement batchers.
- set_
spill_ override - Set or unset the pool through which this thread’s chunk spills are
routed, taking precedence over the gates and the process pool.
Nonerestores the global resolution. - set_
storage_ spill_ enabled - Enable or disable chunk spilling on behalf of storage’s upsert dataflows.