PostgreSQL 指南与教程

这些指南讲的是 Postgres 本身。每一篇都从一个在生产环境里真会遇到的问题出发,用可以直接粘进 psql 的 SQL 复现它,最后给出可以验证的解决办法。文中以 Relyt One 所运行的 PostgreSQL 17 为准,大部分内容也适用于其他较新的 Postgres 版本。可以按下面的阅读路径依次读,也可以直接跳到和你的问题对应的那一篇。

11 篇文章

从这里开始

建议按这个顺序读这四篇:先学会改表结构而不锁表,再让查询用上索引,然后堵住行级安全的漏洞,最后看看从 Postgres 18 迁过来需要改什么。

  1. PostgreSQL 加字段锁表?每种 ALTER TABLE 拿的是什么锁,以及如何安全上线迁移为什么一条单行 ALTER TABLE 就能让整张表的查询全部卡住?本文列出 PostgreSQL 17 上常见迁移各自获取的锁、哪些会重写整张表,以及用 lock_timeout、NOT VALID 和 CONCURRENTLY 让生产环境不停服的做法。
  2. PostgreSQL 索引不生效?Postgres 不走索引的 7 个原因,附可复现的 EXPLAIN 输出明明建了索引,EXPLAIN 里还是 Seq Scan?本文梳理 PostgreSQL 忽略索引(索引不生效)的 7 个原因:函数、类型转换、通配符、选择性、统计信息过期、列顺序、小表,每个都附复现步骤和修复方法。
  3. 行级安全悄悄失效的五种情形行级安全是防范漏写 WHERE 子句的最佳防线,直到它悄无声息地不再生效。本文讲解在 PostgreSQL 17 上 RLS 失效放行的五种情形,每种都附带复现步骤、修复方法,以及一条能在 CI 中发现它的系统目录查询。
  4. 从 Postgres 18 过来?在 Postgres 17 上要改什么Relyt One 运行的是 PostgreSQL 17。如果你的 schema 或使用习惯来自 Postgres 18,本文告诉你哪些写法在 17 上会失败、应该改成什么,以及如何导入在 18 上生成的转储,每个代码片段都在两个版本上运行过。

更多带 Postgres 标签的文章

RSS 订阅

更多文章仅有英文版。 英文文章