postgresql 查找慢sql之四: pg_stat_*、pg_statio_*

本文介绍PostgreSQL中统计信息的配置方法,包括活动、计数、函数使用及IO定时的跟踪,同时讲解如何重置不同类型的统计计数器,以及如何通过SQL查询找出全表扫描的TOP SQL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pg_stat_为统计收集视图, 这里pg_stat_ 是不包含 pg_stat_statements 这个 extension.其实统计信息这些都是记录到具体表,还需要根据反向查找到 sql。

配置统计收集

因为统计收集给查询执行增加了一些负荷,系统可以被配置为收集或不收集信息。这由配置参数控制,它们通常在postgresql.conf中设置(关于设置配置参数的细节请见第 19 章)。

参数 track_activities 允许监控当前被任意服务器进程执行的命令。
参数 track_counts 控制是否收集关于表和索引访问的统计信息。
参数 track_functions 启用对用户定义函数使用的跟踪。
参数 track_io_timing 启用对块读写次数的监控。

$ vi postgresql.conf

#------------------------------------------------------------------------------
# RUNTIME STATISTICS
#------------------------------------------------------------------------------

# - Query/Index Statistics Collector -

track_activities = on
track_counts = on
track_io_timing = on
track_functions = none                  # none, pl, all
track_activity_query_size = 2048        # (change requires restart)
#stats_temp_directory = '/var/run/postgresql/9.6-main.pg_stat_tmp'
stats_temp_directory = 'pg_stat_tmp'

# - Statistics Monitoring -

#log_parser_stats = off
#log_planner_stats = off
#log_executor_stats = off
#log_statement_stats = off

重置

postgresql 提供了4个重置功能,看名字都很容易理解了。

pg_stat_reset()	void	把用于当前数据库的所有统计计数器重置为零(默认要求超级用户权限,但这个函数的 EXECUTE 可以被授予给其他人)。
pg_stat_reset_shared(text)	void	把某些集簇范围的统计计数器重置为零,具体哪些取决于参数(默认要求超级用户权限,但这个函数的 EXECUTE 可以被授予给其他人)。 调用pg_stat_reset_shared('bgwriter')把pg_stat_bgwriter 视图中显示的所有计数器清零。调用pg_stat_reset_shared('archiver') 将会把pg_stat_archiver视图中展示的所有计数器清零。
pg_stat_reset_single_table_counters(oid)	void	把当前数据库中用于单个表或索引的统计数据重置为零(默认要求超级用户权限,但这个函数的 EXECUTE 可以被授予给其他人)
pg_stat_reset_single_function_counters(oid)	void	把当前数据库中用于单个函数的统计信息重置为零(默认要求超级用户权限,但这个函数的 EXECUTE 可以被授予给其他人)

查找 top sql

top seq scan

seq read 为全表扫描,需要关注的是大表的seq read

select * from pg_stat_user_tables where n_live_tup > 100000 and seq_scan > 0 order by seq_tup_read desc limit 20;

参考:
http://postgres.cn/docs/9.6/monitoring-stats.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据库人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值