前端之家收集整理的这篇文章主要介绍了
PostgreSQL学习第十五篇 性能监控,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
数据库性能视图
以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