Postgres 实际应用概览

  • MVCC 多版本控制

一个绕不开的话题, 主要是对抗表空间的膨胀。解决垃圾回收问题,主从库之间从库查询冲突问题。

目前方法每日低峰期定时 vaccum ,gocron自定定时任务 。 根据pgstattuple对磁盘空间利用率进行分析。决定是否vaccum full ,pg_repack

  • 流复制

主从复制,读写分离的基础。五种同步方式

  • 逻辑订阅

大版本升级,数据并归。迁移

  • 执行计划调优

调节成本因子比例,如不同的磁盘类型比例有所区别

  • 参数调优

主机 和 服务

  • 分区表

采用pg_pathman ,因为都是根据业务数据量来决定是否分区。pg_pathman 能够不停服的前提下自动分区数据。

  • 高可用

patroni

  • 分表

citus 注意亲和性 和表之间的join ddl 等限制。

  • 监控,日志

promethues 套件,自定义监控项 。 filebeat elasticsearch kibana 日志收集

  • 统计

结合数据库自带的统计信息及pg_stat_statements 插件生产报表

  • 压测

pg_bench ,自定义sql

  • 备份恢复

wal-g 全量和实时增量

  • 连接池

pgbounch 主要用于分表中各个服务之间

  • FDW