WeSearch

Radim Marek: TOAST: Where PostgreSQL hides big values

Radim Marek· ·12 min read · 0 reactions · 0 comments · 14 views
#postgresql#database#data-storage#compression
Radim Marek: TOAST: Where PostgreSQL hides big values
⚡ TL;DR · AI summary

PostgreSQL employs the TOAST mechanism to manage oversized attributes within its strict 8KB page limit. When a tuple exceeds 2KB, TOAST initiates a series of compression and relocation processes to ensure efficient storage. This article explores the intricacies of TOAST, including its thresholds, storage strategies, and the procedures involved in managing variable-length attributes.

Key facts
Original article
boringSQL | Supercharge your SQL & PostgreSQL powers · Radim Marek
Read full at boringSQL | Supercharge your SQL & PostgreSQL powers →
Opening excerpt (first ~120 words) tap to expand

Table of Contents The 2KB threshold The four storage strategies The shrinking procedure Watching it happen What the heap tuple looks like Compression: pglz vs lz4 What it costs you Limits Following a tuple through the toaster Keeping the page invariant safe In earlier posts in this series we established that every heap tuple lives inside a strict 8KB page. Everything else is built on top of that hard limit: MVCC, HOT updates, and indexes that point at (page, line_pointer). And yet this still works: CREATE TABLE docs (id int PRIMARY KEY, body jsonb); INSERT INTO docs VALUES (1, (SELECT jsonb_agg(g) FROM generate_series(1, 100000) g)); That body value is somewhere north of half a megabyte. The heap page is still 8KB.

Excerpt limited to ~120 words for fair-use compliance. The full article is at boringSQL | Supercharge your SQL & PostgreSQL powers.

Anonymous · no account needed
Share 𝕏 Facebook Reddit LinkedIn Threads WhatsApp Bluesky Mastodon Email

Discussion

0 comments