PostgreSQL meets ART - Using Adaptive Radix Tree to speed up vacuuming
summary
PostgreSQL 17 adds an Adaptive Radix Tree plus a new TidStore (bitmap-per-block values plus a combined-pointer leaf) and uses a bump memory context to replace the old flat dead-tuple array. Benchmarks show vacuum times cut from ~40s to <15s on a UUID-heavy workload and typical cases dropping ~10–15s to ~5–6s, while memory use falls from hundreds of megabytes to tens (claims up to 20× memory reduction). The feature is implemented, committed, and shows consistent speed and space wins.
AI-written summary · about
chapters (8)
- 0:00Introduction to radix trees
- 4:47Adaptive radix tree design
- 11:18Leaf node implementations
- 16:02ART implementation in PostgreSQL
- 24:41Tidstore data structure
- 29:45Optimizing vacuum operations
- 35:25Performance testing results
- 41:37Future plans and feedback
related talks
19mVacuuming Enhancements in PostgreSQL 18: Faster, Smarter, More Predictable
52mBoosting Typical Query Patterns: PostgreSQL 18's Performance Enhancements
38mModern B-Tree techniques
25mPostgreSQL performance tips you have never seen before
42mPostgreSQL Tips & Tricks For App Devs
48mInside Postgres: why VACUUM matters
50mSolving PostgreSQL Wicked Problems
16mAll the Postgres Things
