Skip to content
Opensource internals
  • Posts

Posts

All posts published on this site.

Everything published here, newest first.

ClickHouse's Hash Table Marks Empty Cells With Zero Bytes: No Tombstone, and Floats Compare Bitwise

Oct 16, 2026 24 min read Jay Hubbert

ClickHouse’s hash table has no occupancy bit, no tombstone, and no sentinel pointer.

ClickhouseInternalsHash tablePerformanceMemory

Read more →

ClickHouse's uniq Estimates Distinct Counts by Thinning: The Wide Set That Lifts the 32-Bit Ceiling

Oct 16, 2026 22 min read Jay Hubbert

uniq() is a hash table that deliberately throws data away. When it fills up, it halves its sample rate, keeps the survivors, and multiplies the count back up by the…

ClickhouseInternalsAggregationProbabilisticHash table

Read more →

ClickHouse's Query Result Cache Never Invalidates: A Hash of the AST and a TTL

Oct 16, 2026 25 min read Jay Hubbert

ClickHouse caches query results by hashing the parsed query, not the text you typed, plus the settings and database that could change the answer.

ClickhousePerformanceInternalsCaching

Read more →

CPython's Garbage Collector: Generational Collection at Work

Oct 16, 2026 8 min read Jay Hubbert

CPython frees most objects the instant their refcount hits zero; the cyclic GC is the safety net for reference cycles, using three generations and a gc_ref copy of the refcount.

PythonCpythonInternalsGarbage collection

Read more →

ClickHouse JIT-Compiles Scalar Expressions with LLVM: From ActionsDAG to an RX Page

Oct 16, 2026 17 min read Jay Hubbert

ClickHouse compiles hot scalar expressions to native code with LLVM.

ClickhousePerformanceInternalsJitLlvm

Read more →

← Newer Page 79 of 90 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·