您的位置:首页 > 数据库 > SQL

PostgreSQL学习第十五篇 性能监控

2017-02-07 14:46 330 查看
数据库性能视图
以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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: