监控进程
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;