Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2787701
  • 博文数量: 423
  • 博客积分: 7770
  • 博客等级: 少将
  • 技术积分: 4766
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-09 11:58
个人简介

Oracle/DB2/Postgresql/Mysql/Hadoop/Greenplum/Postgres-xl/Mongodb

文章分类

全部博文(423)

文章存档

2019年(3)

2018年(6)

2017年(27)

2016年(23)

2015年(30)

2014年(16)

2013年(31)

2012年(73)

2011年(45)

2010年(14)

2009年(30)

2008年(30)

2007年(63)

2006年(32)

分类: Mysql/postgreSQL

2016-08-04 17:19:12


一、编译安装pg_stat_statements 模块
[root@localhost ~]# cd /usr/local/src/postgresql-9.1.3/contrib/pg_stat_statements/
[root@localhost pg_stat_statements]# make
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -fpic -I. -I. -I../../src/include -D_GNU_SOURCE   -c -o pg_stat_statements.o pg_stat_statements.c
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -fpic -shared -o pg_stat_statements.so pg_stat_statements.o -L../../src/port  -Wl,-rpath,'/usr/local/pgsql/lib',--enable-new-dtags  
[root@localhost pg_stat_statements]# make install
/bin/mkdir -p '/usr/local/pgsql/lib'
/bin/mkdir -p '/usr/local/pgsql/share/extension'
/bin/sh ../../config/install-sh -c -m 755  pg_stat_statements.so '/usr/local/pgsql/lib/pg_stat_statements.so'
/bin/sh ../../config/install-sh -c -m 644 ./pg_stat_statements.control '/usr/local/pgsql/share/extension/'
/bin/sh ../../config/install-sh -c -m 644 ./pg_stat_statements--1.0.sql ./pg_stat_statements--unpackaged--1.0.sql  '/usr/local/pgsql/share/extension/'
[root@localhost pg_stat_statements]# 

[postgres@localhost ~]$ psql 
psql (9.1.3)
Type "help" for help.


postgres=# CREATE EXTENSION pg_stat_statements;
CREATE EXTENSION
postgres=# \dx
                                     List of installed extensions
        Name        | Version |   Schema   |                        Description                        
--------------------+---------+------------+-----------------------------------------------------------
 pg_stat_statements | 1.0     | public     | track execution statistics of all SQL statements executed
 plpgsql            | 1.0     | pg_catalog | PL/pgSQL procedural language
(2 rows)


二、添加pg_stat_statement 参数


# vi postgresql.conf  最后面添加如下:


#------------------------------------------------------------------------------
# PG_STAT_STATEMENTS OPTIONS
#------------------------------------------------------------------------------
shared_preload_libraries = 'pg_stat_statements'
custom_variable_classes = 'pg_stat_statements'
pg_stat_statements.max = 1000
pg_stat_statements.track = all


 # /etc/init.d/postgresql start 


三、# 生成测试数据


[root@localhost pg_stat_statements]# su - postgres
[postgres@localhost ~]$ psql 
psql (9.1.3)
Type "help" for help.


postgres=# create table t22(id int);
CREATE TABLE
postgres=# insert into t22 values(generate_series(1,13335));
INSERT 0 13335
postgres=# insert into t22 values(generate_series(1,1333599));
INSERT 0 1333599
postgres=# select count(*) from t22;
  count  
---------
 1346934
(1 row)


postgres=# select count(*)from t22 where id <10000 and id>88 ;
 count 
-------
 19822
(1 row)

postgres=# update t22 set id=88888888 where id <10000 and id>88 ;
UPDATE 19822


四、监控结果查询


# 查询慢查执行时间前5的SQL
postgres=# SELECT query, calls, total_time, rows, 100.0 * shared_blks_hit /nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent FROM pg_stat_statements ORDER BY total_time DESC LIMIT 5;
                         query                          | calls | total_time |  rows   |     hit_percent     
--------------------------------------------------------+-------+------------+---------+---------------------
 insert into t22 values(generate_series(1,1333599));    |     1 |  21.729554 | 1333599 | 99.6123143374028840
 update t22 set id=88888888 where id <10000 and id>88 ; |     1 |   0.530321 |   19822 | 96.5676830753559645
 select count(*) from t22;                              |     1 |   0.447886 |       1 | 75.4306265379519213
 select count(*)from t22 where id <10000 and id>88 ;    |     1 |   0.382753 |       1 | 74.6166950596252129
 insert into t22 values(generate_series(1,13335));      |     1 |   0.043362 |   13335 | 99.5923208064635683
(5 rows)


postgres=# 

阅读(4059) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~