TIN:Postgres 的全文文本索引扩展
PlanetScale 发布 Postgres 全文检索扩展 TIN(Text INdex),GA 可用。它支持布尔、短语、span、模糊、通配、正则、大小写/变音折叠,以及 COUNT(*) 和 BM25 top-k,同时兼容 join、复杂 WHERE、连续更新、复制、备份与 MVCC 事务可见性。 基准测试基于 AWS i7i.8xlarge、Postgres 18.6、85GB Stack Exchange 问答语料,对比 ParadeDB、pg_textsearch、GIN:TIN 在多种场景 QPS 至少 8 倍领先,p99 延迟大幅下降,且索引更小(50.7GB vs GIN 28GB 但建索引时间 8 分钟 vs GIN 2 小时+)、并发更新下吞吐更高。 技术亮点:直接用 Postgres ctid 作为文档标识,避免 segment 内 doc id 到 ctid 的映射;两级 bitmap(页号 + 页内偏移)让 postings 高度压缩;每页 256-bit 页号 bitmap 可一次放入 AVX2 寄存器,交并查只需 AND/OR/POPCNT;查询结果天然按 heap 物理顺序返回,减少随机 I/O;MVCC 可见性通过 heap 检查完成。 作者强调这是解决 Postgres 全文检索长期短板的一手工程实践,性能数据与架构解释都较为详细,适合有数据库/检索引擎背景的读者。 
















