--- title: PostgreSQL pg_stat_statements 与慢查询治理(标准化、成本与验证) date: 2025-11-26 keywords: - pg_stat_statements - 慢查询 - 代价估算 - 归一化 - 优化 description: 启用pg_stat_statements收集归一化查询统计,通过成本与执行指标定位慢查询并提出优化策略,提供验证方法。 tags: - PostgreSQL - pg_stat_statements - 代价估算 - 优化 - 归一化 - 慢查询 - 数据与存储 - 数据库 categories: - 文章资讯 - 技术教程 --- ## 概述 pg_stat_statements收集SQL的归一化统计信息,包括调用次数、总耗时、平均耗时与共享命中率。结合`EXPLAIN ANALYZE`与索引/统计优化,可系统治理慢查询。 ## 关键实践与参数 - 安装与启用:`shared_preload_libraries='pg_stat_statements'` - 视图查询:`pg_stat_statements` 提取TOP耗时与调用 - 优化手段:索引、扩展统计、部分索引与参数调优 - 验证闭环:前后对比`mean_time`与`blk_read_time` ## 示例/配置/实现 ```sql ALTER SYSTEM SET shared_preload_libraries = 'pg_stat_statements'; CREATE EXTENSION IF NOT EXISTS pg_stat_statements; SELECT query, calls, total_time, mean_time, rows FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10; EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM orders WHERE customer_id = 123 AND status = 'PAID' ORDER BY created_at DESC LIMIT 50; ``` ## 验证 - 采样稳定:统计归一化后同类查询聚合合理 - 优化效果:索引与统计调整后`mean_time`与I/O显著下降 - 计划稳定:不同数据分布下计划一致性提升 - 长期治理:定期复盘TOP查询与改善记录 ## 注意事项 - 需重启启用`shared_preload_libraries` - 注意统计抹平参数差异,结合具体`EXPLAIN` - 与自动化告警和报表结合跟踪治理 - 避免对短生命周期环境的过度优化

发表评论 取消回复