Skip to content
Opensource internals
  • Posts

Posts

All posts published on this site.

Everything published here, newest first.

ClickHouse's Map Column Is a Flat Pair List: Buckets on Disk Make One-Key Reads Cheap

Oct 20, 2026 12 min read Jay Hubbert

A Map column is an Array(Tuple(keys, values)) with offsets, and since 26.3 its serialization can hash the keys into buckets so m[‘k’] reads one substream.

ClickhouseInternalsMapStoragePerformance

Read more →

ClickHouse's Decimal Is an Integer and a Scale: A Power-of-Ten Shift With a Silent Overflow

Oct 20, 2026 20 min read Jay Hubbert

ClickHouse’s Decimal is an integer with the scale in the type, so arithmetic is a power-of-ten shift — with a silent overflow hole at 128 bits.

ClickhouseInternalsTypesDecimalArithmetic

Read more →

ClickHouse Rebuilds a Vector From Its Bit Planes: Centre-Rounding, IEEE Corner Cells, and a Popcount

Oct 20, 2026 21 min read Jay Hubbert

Rebuilding a vector from bit planes is a rounding problem: ClickHouse centre-fills the dropped bits, protects the IEEE zero and infinity cells, and turns precision 1 into a …

ClickhouseInternalsVector searchTypesFloat

Read more →

ClickHouse's DateTime Is Just Unix Seconds: The Zone Is a 146097-Day Lookup Table

Oct 20, 2026 23 min read Jay Hubbert

ClickHouse’s DateTime is Unix seconds plus a time zone that lives in the type, backed by a 146097-day lookup table per zone.

ClickhouseInternalsDatetimeTimezoneTypes

Read more →

ClickHouse Writes Part Metadata as Plain Text: Then Shares It Across a Thousand Parts

Oct 20, 2026 21 min read Jay Hubbert

A MergeTree part’s metadata lives in plain text sidecar files next to the data, each written atomically and parsed back at load time.

ClickhouseInternalsMergetreeStoragePerformance

Read more →

← Newer Page 55 of 83 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·