You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL故障切换(failover)后pg_stat_user_tables统计信息丢失如何解决?

解决方案

针对PostgreSQL故障切换后用户表统计信息清零导致查询规划器统计过时的问题,最简处理方案如下:

  • 最通用的快速处理方法:故障切换完成后,直接在新主库执行全库ANALYZE命令
    ANALYZE;
    
    该命令不需要超级用户权限,仅需数据库所属角色即可执行,它会重新采样所有用户表的数据分布、更新查询规划器依赖的统计元数据,且运行过程中不会加排他锁,完全不阻塞正常业务读写,执行速度远快于全库VACUUM,不需要扫描死元组,仅收集统计信息。
  • 如果库体量极大,也可以仅针对故障切换前有大量DML操作的表执行指定表的统计更新:
    ANALYZE your_table_name;
    
  • 如需自动化处理,可以直接在高可用集群的故障切换回调脚本中加入ANALYZE执行逻辑,确认新主库升主成功后自动触发,无需人工介入。

注意事项

  • 如果全库ANALYZE执行耗时过长,可以临时调低default_statistics_target参数的取值降低采样率,执行完成后再恢复原有配置,可大幅缩短运行时间。
  • 执行时可追加VERBOSE参数查看执行进度,确认哪些表已经完成统计更新:
    ANALYZE VERBOSE;
    

内容的提问来源于stack exchange,提问作者Fabrice Chapuis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:15:06