PlanetScaleEric Ridge15 min readintermediate
Introducing TIN: full-text search for Postgres
Summary
PlanetScale’s TIN is a new PostgreSQL extension that implements a full‑text search index supporting Boolean, phrase, span, fuzzy, wildcard, regex, case/accent folding, COUNT(*) and BM25 top‑k queries. In a suite of benchmarks on an i7i.8xlarge EC2 instance (8 vCPU, 32 GB RAM), TIN built in 8 min 10 s (50.7 GB index) and outperformed ParadeDB, pg_textsearch and the built‑in GIN index by large marg…
- TIN provides a single PostgreSQL index that supports the full feature set most applications need (boolean, phrase, span, fuzzy, regex, case/accent folding, counting, BM25 ranking).
- Benchmark methodology: 85 GB, 150 M‑doc Stack Exchange corpus; synthetic query set (conjunction, disjunction, phrase) with 1,719 queries; AWS i7i.8xlarge, 8 vCPU, 32 GB RAM containers; default Postgres params except par…
- Index build time: 8 min 10 s, size 50.7 GB (≈51 % of corpus). Competes favorably against ParadeDB (19 min, 52 GB) and pg_textsearch (27 min, 41 GB).
- Performance: on read‑only mixed top‑10 workload, TIN achieves 199 QPS (p99 256 ms) vs. ParadeDB 7.9 QPS (p99 6.8 s). Under concurrent writes (1 k UPDs/s), TIN sustains 125 QPS (p99 354 ms) while ParadeDB drops to 2.2 QP…
Full‑text search is a common requirement for many SaaS workloads, but existing PostgreSQL extensions either lack features or suffer severe performance penalties, especially under write‑heavy loads. TIN demonstrates that a native PostgreSQL index can deliver production‑grade search speed and feature…
8/10




