Agent Skills
返回列表
💻

PostgreSQL 数据库

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f12a44b7/self-dev-pg。

技能介绍

解决什么问题

PostgreSQL 的性能问题常常不在 SQL 语法,而在索引选择、连接方式、类型语义和运维细节。WHERE active = true 可能适合部分索引,WHERE lower(email) = ... 需要表达式索引,JOIN 使用外键列却忘记建索引,也会让查询退化成扫描。另一个常见坑是写入路径:未使用索引增加维护成本,低基数字段索引可能不如顺序扫描,LIKE '%suffix' 也不能依赖普通 B-tree。

技能如何工作

这份技能以清单方式组织 PostgreSQL 实战经验:

  • 索引:提示 WHERE active = true、ON lower(email)、INCLUDE (name, email)、外键列和复合索引顺序;
  • 查询与并发:使用 SELECT FOR UPDATE SKIP LOCKED、pg_advisory_lock、IS NOT DISTINCT FROM、DISTINCT ON;
  • 连接与资源:建议 PgBouncer、statement_timeout、idle_in_transaction_session_timeout 和 max_connections 调参思路;
  • 数据与运维:提醒 IDENTITY、TIMESTAMPTZ、NUMERIC、TEXT、autovacuum、VACUUM ANALYZE、pg_repack 和事务隔离级别。

适用边界

它适合排查慢查询、设计表结构、评审 PostgreSQL 用法,不适合作为数据库部署工具。真正落地时仍需结合 EXPLAIN (ANALYZE, BUFFERS)、统计信息、数据规模和业务约束,特别是 SERIALIZABLE 的 40001 重试、全文搜索语言参数以及长事务锁影响。

使用场景

  • 排查慢查询时,结合 `EXPLAIN (ANALYZE, BUFFERS)` 判断索引缺失、堆取行和统计偏差。
  • 设计登录或订单表时,选择 `IDENTITY`、`TIMESTAMPTZ`、`NUMERIC` 和 `TEXT` 等合适类型。
  • 处理任务队列时,用 `SELECT FOR UPDATE SKIP LOCKED` 与 `pg_advisory_lock` 实现并发协作。
  • 维护写入密集表时,检查未使用索引、低基数字段索引和 autovacuum 滞后风险。

适合人员

  • 负责排查 PostgreSQL 慢查询和索引设计的后端工程师
  • 维护生产库连接数、超时和事务隔离策略的应用工程师
  • 需要评审表结构和全文搜索方案的数据工程师
  • 处理任务队列与并发写场景的 SRE 或平台工程师