数据库性能视图 以pg_stat开头。是否产生这些统计数据,由一下参数决定: track_counts:是否收集表和索引上的统计信息,默认为on track_functions:可以取all、pl和all,如果是pl则只收集pl/pgsql写的函数的统计信息;all表示收集所有类型的函数,包括C语言和sql写的函数。默认为none track_activities:是否收集当前正在执行的sql,默认为on track_io_timing:是否收集I/O的时间信息。默认为off。 最常用视图:pg_stat_activity,该视图可以查询出正在运行的sql。 postgres=# \x Expanded display is on. postgres=# select * from pg_stat_activity; -[ RECORD 1 ]----+-------------------------------- datid | 13269 datname | postgres pid | 15038 usesysid | 10 usename | postgres application_name | psql client_addr | client_hostname | client_port | -1 backend_start | 2017-01-18 23:00:31.328043+08 xact_start | 2017-01-18 23:00:47.766953+08 query_start | 2017-01-18 23:00:47.766953+08 state_change | 2017-01-18 23:00:47.766957+08 wait_event_type | wait_event | state | active backend_xid | backend_xmin | 1830 query | select * from pg_stat_activity; PG提供了一下各个对象级别的统计信息视图: pg_stat_database pg_stat_all_tables pg_stat_sys_tables pg_stat_user_tables pg_stat_all_indexes pg_stat_sys_indexes pg_stat_user_indexes 根据pg提供的pg_test_timing工具测试打开track_io_timing参数是否会产生瓶颈: PG还提供了对数据库内函数的调用次数及其他信息进行统计的视图:pg_stat_user_functions PG还提供了一下各个对象上发生I/O情况的统计视图: pg_statio_all_tables pg_statio_sys_tables pg_statio_user_tables pg_statio_all_indexes pg_statio_sys_indexes pg_statio_user_indexes pg_statio_all_sequences pg_statio_sys_sequences pg_statio_user_sequences pgstatspack Linux监控工具: top iostat :iostat -dmx 1 /dev/sda vmstat:查看内存情况 sar:可以查看各种信息,最常见的是查看网络的流量 [root@pg ~]# iostat -dmx 1 /dev/sda Linux 2.6.32-431.el6.x86_64 (pg) 01/18/2017 _x86_64_ (1 cpu) Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util sda 0.05 0.36 0.14 0.37 0.00 0.00 20.12 0.01 17.96 16.36 0.84 await:包括了在队列中等待的时间 svctm:指把I/O发送到磁盘上花了多少时间,不包括在I/O队列中的时间,对于普通硬盘来说,这个时间通常不应该超过20ms %util:表示I/O利用率 [root@pg ~]# vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 1354120 109296 334656 0 0 2 3 17 11 0 0 99 1 0 swap中的si和so,如果这两项有大于0的数值,说明发生了swap交换,系统的内存不足了。bi bo可看成当前IO的情况 [root@pg ~]# sar -n DEV 1 2 Linux 2.6.32-431.el6.x86_64 (pg) 01/18/2017 _x86_64_ (1 cpu) 11:39:23 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 11:39:24 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11:39:24 PM eth0 0.98 0.00 0.06 0.00 0.00 0.00 0.00 11:39:24 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 11:39:25 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11:39:25 PM eth0 0.99 0.99 0.06 0.37 0.00 0.00 0.00 Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: eth0 0.99 0.49 0.06 0.18 0.00 0.00 0.00