2026-06-16 | database · kernel | #postgresql #pg-kernel #gin #inverted-index #full-text-search #tsvector #fast-update #pending-list #bitmap-scan #intarray
拆解 PostgreSQL GIN 索引的内部结构:entry tree、posting list、posting tree 三者各在什么条件下使用;Fast Update 的 pending list 设计与 gin_clean_pending_list 合并时机;gingetbitmap() 的 bitmap AND/OR 多关键词搜索合并流程;全文搜索 tsvector 与数组 _int4 的 GIN 实现;以及 GIN 与 GiST 在写性能、读性能、存储开销上的三角权衡和具体场景下的选择建议。
2026-04-13 | architecture | #search-engine #inverted-index #Elasticsearch #relevance #distributed-index
一个生产级搜索系统除了倒排索引,还需要哪些架构组件?本文分析分布式索引的分片策略、相关性排序的工程实现,深入 Elasticsearch 的集群架构与运维陷阱。
2025-09-07 | storage | #index #btree #hash-index #inverted-index #bloom-filter #bitmap #r-tree
数据库里存了一亿行数据,要找出 userid 42 的那一行。没有索引的做法是全表扫描(Full Table Scan)——从第一个数据页读到最后一个数据页,逐行比对。假设每个数据页 16 KB,一亿行占 20 GB,即使顺序读能跑到 500 MB/s,也需要 40 秒。加一个 B+Tree 索引,三次磁盘 I/O 就…