Skip to content
Opensource internals
  • Posts

Posts

All posts published on this site.

Everything published here, newest first.

PostgreSQL Stores a Row: Headers, Line Pointers, and TOAST

Oct 20, 2026 25 min read Jay Hubbert

A row is a 23-byte header plus a payload, reached through a 4-byte line pointer on a slotted 8 kB page — the indirection that makes VACUUM, HOT updates, and TOAST possible.

PostgresStorageInternals

Read more →

ClickHouse Sums Floats with Kahan Compensation: The Merge Expression You Must Not Simplify

Oct 20, 2026 16 min read Jay Hubbert

ClickHouse’s sumKahan carries a compensation term and reconstructs the lost low bits on every add; sum over Decimal widens the accumulator to Decimal128.

ClickhouseNumericsPerformanceInternals

Read more →

ClickHouse's Compressed Column Throws Until You Call decompress(): It Never Caches the Result

Oct 20, 2026 13 min read Jay Hubbert

ColumnCompressed wraps a column in an LZ4 buffer and throws on every accessor until decompress() is called.

ClickhouseInternalsMemoryCompressionPerformance

Read more →

ClickHouse's QBit Column: Float32 Becomes 32 Bit Planes, and Precision Reads Only Some

Oct 20, 2026 13 min read Jay Hubbert

The QBit column stores a float vector bit-transposed into bit-plane subcolumns, and an analyzer pass makes a distance query read only the planes its precision needs.

ClickhouseInternalsVector searchPerformanceSimd

Read more →

ClickHouse's Lazy Column Replication: One Shared Index Per Output Row, Widened on Demand

Oct 20, 2026 13 min read Jay Hubbert

ColumnReplicated keeps the source column once and stores one row index per output row, so a fan-out JOIN copies an index instead of the data.

ClickhouseInternalsJoinPerformanceMemory

Read more →

← Newer Page 54 of 83 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·