postgresql-database-engineering 是做什么的?
全面的PostgreSQL数据库工程技能,涵盖索引策略、查询优化、性能调优、分区、复制、备份与恢复、高可用性及生产数据库管理。掌握MVCC、VACUUM操作、连接池、监控和可扩展性模式等高级PostgreSQL特性。
索引策略
- B-tree、Hash、GiST、GIN和SP-GiST索引的选择与设计
- 部分索引与表达式索引的使用场景
- 索引维护:重建、合并与清理
- 索引扫描与位图扫描对比
查询优化
- EXPLAIN和EXPLAIN ANALYZE解读
- 查询重写与子查询优化
- 连接策略:Nested Loop、Hash Join、Merge Join
- 统计信息收集与成本估算
性能调优
- shared_buffers、work_mem、maintenance_work_mem等关键参数配置
- 操作系统层优化(文件系统、内核参数)
- 预热缓存与预加载
- 慢查询日志分析与自动化
分区
- 范围分区、列表分区与哈希分区
- 分区裁剪与分区删除
- 子分区与分区管理
- 分区与性能对比
复制
- 流复制:同步与异步模式
- 级联复制与逻辑复制
- 冲突解决与延迟监控
- 复制槽与WAL管理
备份与恢复
- pg_dump、pg_dumpall与pg_restore实践
- 连续归档(PITR)
- pg_basebackup与WAL日志管理
- 验证备份完整性
- 灾难恢复演练
高可用性
- Patroni与Etcd搭建自动故障转移集群
- 负载均衡与读写分离(Pgpool-II、pgBouncer)
- 脑裂预防与仲裁机制
- 多主复制与Galera方案对比
生产数据库管理
- 连接池配置与监控
- 锁监控与死锁处理
- 表膨胀与VACUUM策略
- 自动化维护与定期分析
- 容量规划与扩展
高级特性
- MVCC内部机制与事务隔离级别(Read Committed、Repeatable Read、Serializable)
- VACUUM深入:自动清理、手动清理、冻结
- 存储过程、触发器与事件触发器
- FDW(外部数据包装器)与逻辑订阅
监控与告警
- pg_stat_statements与pg_stat_activity使用
- 第三方监控:pgBadger、pgmonitor、Prometheus+Grafana
- 告警规则配置(空间、连接、慢查询)
- 日志归档与审计
可扩展性模式
- 读写分离与分片
- 缓存层(Redis、Citus)集成
- 表空间管理
- 向分布式PostgreSQL(TimescaleDB、Citus)迁移
本技能持续根据社区最佳实践更新。贡献者请查看GitHub仓库以了解更多细节。