Skip to content
Opensource internals
  • Posts

Posts

All posts published on this site.

Everything published here, newest first.

ClickHouse Flattens an Expression DAG into Fixed Slots: Replayed Once Per 65 409-Row Block

Oct 19, 2026 16 min read Jay Hubbert

ClickHouse compiles a SELECT into an ActionsDAG and reuses the sorted plan for every block.

ClickhouseInternalsQuery planPerformance

Read more →

ClickHouse Reads MergeTree Parts in Key Order: Constant Key Columns Count Toward the Prefix

Oct 19, 2026 16 min read Jay Hubbert

ClickHouse matches ORDER BY against the sorting key and reads MergeTree parts in key order instead of sorting everything.

ClickhouseInternalsQuery planPerformance

Read more →

ClickHouse's Log Engine Commits Through sizes.json: A Marks File Splits Reads Across Threads

Oct 19, 2026 13 min read Jay Hubbert

Log stores one .bin per column stream plus a __marks.mrk file of (rows, offset) pairs, and truncates files back to a recorded size after a crash.

ClickhouseInternalsStorage enginesLog

Read more →

ClickHouse's Kafka Engine Commits After the Write: A Cancelled Block Rewinds to Its Start Offset

Oct 19, 2026 12 min read Jay Hubbert

Kafka offsets are committed only after the block has been written to the views, and a cancelled block is rewound to its start offset and replayed.

ClickhouseInternalsKafkaStreamingStorage engines

Read more →

ClickHouse's Buffer Engine Shards Writes in RAM: Three Threshold Families and a Swap-Back on Failure

Oct 18, 2026 13 min read Jay Hubbert

Buffer shards writes in RAM, flushes them on a min/max/flush threshold algebra, and restores the block if the destination write fails.

ClickhouseInternalsBufferStorage engines

Read more →

← Newer Page 62 of 86 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·