用途
PostgreSQL Professional 是一项专注于 PostgreSQL 的专业技能,提供数据库管理、性能优化与高级特性实现方面的综合能力,目标是在高可用与高级扩展的支持下,让 PostgreSQL 部署达到尽可能高的可靠性、性能与可扩展性。
适用场景
当出现以下需求时适合使用本技能:
- 需要 PostgreSQL 专属特性(JSONB、全文检索、PostGIS、pgvector)
- 搭建流复制或逻辑复制
- 实现 PostgreSQL 扩展
- 排查 PostgreSQL 专属问题
- 优化 PostgreSQL 配置
- 实现分区与高可用
具体触发条件包括:JSONB 索引、全文检索、PostGIS、pgvector;流复制或逻辑复制;扩展实现(pg_trgm、PostGIS、timescaledb、pg_partman);专属问题排查(autovacuum、膨胀、WAL 归档);配置优化(shared_buffers、work_mem、vacuum 设置);声明式分区与约束排除;高可用搭建(Patroni、repmgr、pgpool-II);JSONB 模式设计与 GIN 索引查询优化。
以下情况不建议使用:通用 SQL 查询编写(应使用 sql-pro 处理 ANSI SQL);跨平台数据库优化(应使用 database-optimizer 做通用调优);MySQL 或 SQL Server 专属特性;数据库管理基础(用户、权限,应使用 database-administrator);不涉及 PostgreSQL 专属特性的简单查询优化;ORM 查询模式(应使用具备 ORM 专长的 backend-developer)。
主要能力
PostgreSQL 架构:进程架构与内存配置、WAL 机制与 MVCC 实现、存储布局与缓冲区管理、锁管理与后台工作进程。
高级特性:使用 GIN 索引优化 JSONB;使用 tsvector 与 GIN 索引实现全文检索;PostGIS 空间查询与索引;时序数据处理与分区;外部数据包装器与跨库查询;并行查询与 JIT 编译。
性能调优:配置优化(内存、连接、检查点);查询优化与执行计划分析;索引策略与索引使用监控;vacuum 调优与 autovacuum 配置;连接池与并行执行。
复制策略:流复制与逻辑复制;同步设置与级联副本;延迟副本与故障转移自动化;负载均衡与冲突解决。
备份与恢复:pg_dump 策略与物理备份;WAL 归档与 PITR 设置;备份校验与恢复测试;自动化脚本与保留策略。
使用方式
技能内提供决策框架,用于在具体场景下选择方案。
JSONB 索引策略:分析 JSONB 查询模式后,若为包含查询(@> 运算符),使用 GIN 配合 jsonb_path_ops,其索引比默认 GIN 小 2-3 倍、对 @> 包含检查更快,但不支持键存在性(?)查询;若为键存在性查询(?、?|、?& 运算符),使用默认 GIN 操作符类,支持全部 JSONB 运算符但索引更大;若某特定路径频繁查询,使用表达式索引(如 CREATE INDEX idx ON table ((column->>'key'))),对特定路径最高效且 B-tree 支持范围查询;若需要全文文档搜索,则组合 GIN 与表达式索引,GIN 用于灵活查询,表达式索引用于热点路径。
复制策略选择:读扩展用流复制(异步)配多个只读副本;零数据丢失用流复制(同步)并设置 synchronous_commit = on;表级复制用逻辑复制,通过 CREATE PUBLICATION/SUBSCRIPTION;跨版本升级用逻辑复制到新版本;灾难恢复用流复制加 WAL 归档以获得 PITR 能力;延迟恢复用延迟副本,设置 recovery_min_apply_delay。
质量检查清单
性能:查询性能目标达成(OLTP <50ms,分析 <2s);所有关键查询均审查 EXPLAIN ANALYZE;JSONB、数组、全文查询使用 GIN/GiST 索引;大于 10GB 的时序数据表实施分区;缓存命中率 >95%(shared_buffers 加操作系统缓存);实施连接池(PgBouncer 或应用层池)。
配置:shared_buffers = 内存的 25%;effective_cache_size = 内存的 75%;work_mem 按工作负载调优(EXPLAIN 中无临时文件溢出);配置 autovacuum(大表 scale_factor ≤0.05);max_connections 合理(或使用 PgBouncer);启用 WAL 归档以支持 PITR。
复制(如适用):创建复制槽(防止 WAL 被删除);复制延迟 <500ms(P95);监控 pg_stat_replication(sync_state、replay_lag);测试故障转移(将副本提升为主库);为复制访问配置 pg_hba.conf。
扩展:安装所需扩展(pg_trgm、PostGIS、pgvector 等);扩展版本与 PostgreSQL 版本兼容;为 JSONB、tsvector、trigram 创建 GIN 索引;全文检索配置正确的语言词典。
JSONB(如使用):创建 GIN 索引(包含查询用 jsonb_path_ops);为频繁查询路径创建表达式索引;在应用层做 JSONB 校验(jsonschema 或自定义);避免过深嵌套(超过 3 层考虑规范化)。
监控:配置慢查询日志(log_min_duration_statement = 200ms);安装并监控 pg_stat_statements;监控 autovacuum 进度(pg_stat_progress_vacuum);监控表膨胀(死元组 <15%);配置复制延迟告警(阈值 <1s)。
限制
本技能聚焦 PostgreSQL 专属能力,不覆盖通用 SQL 编写、跨平台数据库调优、MySQL/SQL Server 专属特性、数据库管理基础(用户与权限)以及不涉及 PostgreSQL 专属特性的简单查询优化。更多技术细节参见 REFERENCE.md,代码示例与模式参见 EXAMPLES.md。