Skip to content
Opensource internals
  • Posts

Performance

How ClickHouse's Sparse Column Stores Only the Rows That Differ

Oct 21, 2026 20 min read Jay Hubbert

Real columns are mostly default. A status column is 'active' for 98% of rows and '' for the rest. A retries column is 0 almost always. An amount column that is Nullable is NULL for …

ClickhousePerformanceInternalsMemoryCompression

Read more →

tmux Parses Escape Sequences Fast: Four Boring Optimisations That Matter

Oct 11, 2026 11 min read Jay Hubbert

tmux’s parser has no clever trick in it. It’s a state machine with a transition cache, a bsearch(), a trie, and a width cache — four small optimisations, each of which swaps an…

TmuxPerformanceInternalsInput

Read more →

PostgreSQL Speeds Up Hash Joins

Oct 11, 2026 31 min read Jay Hubbert

A hash join is the simplest join algorithm in the database: build a hash table from the inner relation, then probe it once per outer row. There is no sort, no merge, no nested loop …

PostgresPerformanceExecutorInternals

Read more →

PostgreSQL Waits for Locks

Oct 6, 2026 49 min read Jay Hubbert

Every lock in PostgreSQL is a bet. When a backend wants a resource that somebody else has, it has to choose: burn CPU waiting, or go to sleep and let the kernel schedule somebody …

PostgresPerformanceConcurrencyInternals

Read more →

PostgreSQL Locks Buffers Without LWLocks

Oct 2, 2026 42 min read Jay Hubbert

Every time PostgreSQL reads a page it does two things: it pins the shared buffer that holds the page, and it takes a content lock on that buffer so that nobody rewrites the bytes …

PostgresPerformanceStorageConcurrencyInternals

Read more →

← Newer Page 4 of 8 Older →

© 2026 Jay Hubbert · Built with Hugo 0.168.0

RSS ·