跳到正文

PgSQL 学习路线:从索引到 AI 数据层 ​

适用 PostgreSQL 16/17。pgvector、zhparser、pg_jieba、Citus、TimescaleDB 等扩展的版本与默认值,以各自文档为准。

这套内容按「查询怎么走 → 并发怎么控 → 故障怎么恢复 → 能力怎么扩」组织。先读索引和执行计划,再看 MVCC 与锁,最后进入复制、备份、监控和扩展。每一篇都按「一句话、为什么需要、核心机制、最小上手、生产动作、边界、讲清楚」写,命令默认可以直接复制。

篇目与权重 ​

编号篇目权重读它是为了解决
01索引类型与优化★★★什么查询形态该建什么索引,为什么建了还用不上
02查询优化与执行计划★★★看懂 EXPLAIN (ANALYZE, BUFFERS),定位慢在扫描、连接还是排序
03高可用与复制★★★主库挂了怎么切、会丢多少数据、脑裂怎么收
04分区表与扩展★★大表怎么按时间拆、约束有哪些限制、分区怎么维护
05JSON与全文检索★★JSONB 怎么建索引、中文怎么分词、GIN 什么时候失效
06pgvector向量检索★★★向量列、HNSW/IVFFlat 参数、召回怎么测
07PgSQL-vs-MySQL★★★两条存储引擎路线的差异,选型看什么指标
08性能调优★★★参数默认值、怎么改、影响面是什么
09AI数据架构选型★★向量和业务数据要不要同库,混合检索怎么写
10MySQL迁移PgSQL★★类型、大小写、自增、事务差异逐项怎么处理
11事务隔离与MVCC★★★快照、可见性、RR 到底防不防幻读、膨胀从哪来
12锁机制★★★表锁/行锁冲突、锁超时、死锁牺牲谁、咨询锁怎么用
13备份恢复与运维★★★逻辑/物理备份、PITR、RPO/RTO、日常排障
14PgSQL与AI★★★它在 RAG 链路里的角色、新负载、能力边界与选型
15监控指标与告警★★★盯哪些指标、WAL/死元组/连接怎么雪崩、先保护什么

三条阅读路径 ​

  • 业务排障:01 索引 → 02 执行计划 → 08 性能调优 → 12 锁 → 13 备份与运维。
  • 机制深入:11 MVCC → 12 锁 → 01 索引 → 02 执行计划 → 03 复制。
  • AI 场景:06 pgvector → 14 PgSQL 与 AI → 09 数据架构选型 → 05 全文检索与 JSONB。
  • 稳定性运维:15 监控与告警 → 13 备份与运维 → 12 锁 → 03 复制。

按问题查 ​

你现在的问题先看
查询慢,不知道有没有走索引01、02
表越来越大,DELETE 后空间不回收11、13
DDL 卡住、应用报锁等待12
主库切换后不知道丢没丢数据03、13
JSONB 或中文搜索慢05
向量召回不稳定06、09、14
要不要从 MySQL 迁07、10
参数怎么调08、99
怎么设监控、雪崩前该看什么15
WAL 或复制槽把磁盘写满15、13

怎么用这套内容 ​

  • 每篇先读「一句话」和「为什么需要」,判断是否与你的问题相关。
  • 「最小上手」里的命令可以直接复制;先在小库或测试实例验证。
  • 「生产动作」按「现象 → 命令 → 判断」组织,排障时从现象倒查。
  • 「边界」列的是不该用的场景;选型时先看它,再看优点。

版本与前提 ​

  • 正文默认 PostgreSQL 16/17;更早版本注意 pg_stat_statements 字段名、recovery.signal、分区与索引语法差异。
  • pgvector、zhparser、pg_jieba、Citus、TimescaleDB 不是内核自带,安装方式与默认值以扩展文档为准。
  • 示例中的主机、路径、库名是占位符,复制前替换。

上线前的最低要求 ​

  1. 读完 12 和 13:知道 DDL 会拿什么锁、备份能不能在约定 RPO/RTO 内恢复。
  2. 过一遍 99-生产检查清单:它只管「不做会出事」的动作,机制解释在正文。
  3. 把核心查询逐条跑 EXPLAIN (ANALYZE, BUFFERS),确认没有大表 Seq Scan、排序没有落盘。
  4. 至少做一次真实恢复演练,而不是只看备份文件存在。
  5. 按 15 篇把连接、复制槽、死元组、WAL 与 checkpoint 的告警接上;阈值先用起点值,再按基线校准。

一句话定位 ​

PostgreSQL 的核心不是「功能多」,而是把向量、JSON、全文、地理空间都做成普通列和普通索引,和业务数据共享事务。这决定了它在 AI 场景里的位置:千万级以内、过滤条件复杂、要求事务一致时,不必为了向量单独引入一个系统;规模或隔离要求超出单机,再拆给专用向量库。

把一门技术讲透到既懂也会用