监控PostgreSQL数据库活动

监控进程

ps auxww | grep ^postgres

统计收集器 是一个子系统,收集报告关于server活动的信息。收集器可以在磁盘块和单独行上访问表和索引,也跟踪每个表的所有行,vacuum和analyze的信息。PostgreSQL也支持提供当前别的server进程正在执行的命令。这个工具与收集器是相互独立的。

收集器的配置

因为收集器对查询的执行有一些额外的负载,系统可以配置收集还是不收集信息。参数track_activities启用监控任何server进程执行的当前命令。track_counts控制着是否收集表和索引的信息。track_functions启用跟踪用户定义的函数。track_io_timing启用跟踪块读和写的时间。

收集器通过临时文件传送收集的信息给PostgreSQL进程。这些文件存放在stats_temp_directory参数指定的目录中。当使用统计信息来监控当前活动的时候,信息不会马上更新。每个单独的server进程传送新的信息在变成idle状态前传送。

标准的统计信息视图

pg_stat_activity:每个进程一行,显示这个进程相关的当前活动,像是状态和查询。

pg_stat_bgwriter:只有1行,显示后台写进程的状态

pg_stat_database:每个数据库一行,显示数据库级的信息。

pg_stat_all_tables在当前数据库中灭个表一行,显示具体表的访问信息

pg_stat_all_indexex显示当前数据库的每个索引一行,索引的访问信息。

pg_station_all_tables,显示具体表的io

pg_statio_all_sequence显示具体sequence的io

pg_stat_replication每个wal发生进程一行,显示发送连接备库的复制信息。

pg_stat_database_conficts显示由于备库上恢复冲突导致的查询取消。


还有就是通过函数查询了,下面是显示进程和相关查询的语句

select pg_stat_get_backend_pid(s.backendid) as pid,pg_stat_get_backend_activity(s.backendid) as query from (select pg_stat_get_backend_idset() as backendid) as s;

监控磁盘使用

select pg_relation_filepath(oid),relpages from pg_class where relname='customer';

显示toast表占用空间,使用下面的查询

select relname,relpages from pg_class,(select reltoastrelid from pg_class where relname='customer') as ss where oid=ss.reltoastrelid or oid=(select reltoastidxid from pg_class where oid=ss.reltoastrelid) order by relname;

查看索引大小

select c2.relname,c2.relpages from pg_class c,pg_class c2,pg_iindex i where c.relname='customer' and c.oid=i.indrelid and c2.oid=i.indexrelid order by c2.relname;

找到最大的表和索引

select relname,relpages from pg_class order by relpages desc;



展开阅读全文

没有更多推荐了,返回首页