• PostgreSQL下安装pg_stat_statements


    安装过程如下:进入安装包的contrib/pg_stat_statements目录,执行编译和安装动作:

    1 [root@server pg_stat_statements]# pwd
    2 /soft/postgresql-9.1.2/contrib/pg_stat_statements
    3 [root@server pg_stat_statements]# make && make install
    4 make: `all' に対して行うべき事はありません.
    5 /bin/mkdir -p '/usr/local/pgsql/lib'
    6 /bin/mkdir -p '/usr/local/pgsql/share/extension'
    7 /bin/sh ../../config/install-sh -c -m 755  pg_stat_statements.so '/usr/local/pgsql/lib/pg_stat_statements.so'
    8 /bin/sh ../../config/install-sh -c -m 644 ./pg_stat_statements.control '/usr/local/pgsql/share/extension/'
    9 /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/'

    在data/postgresql.conf中,进行配置:

    shared_preload_libraries = 'pg_stat_statements'      
    
    pg_stat_statements.max = 1000
    
    pg_stat_statements.track = all
    shared_preload_libraries = 'pg_stat_statements',表示要在启动时导入pg_stat_statements 动态库。
    pg_stat_statements.max = 1000,表示监控的语句最多为1000句。
    pg_stat_statements.track = top,表示不监控嵌套的sql语句。
    pg_stat_statements.track_utility = true,表示对 INSERT/UPDATE/DELETE/SELECT 之外的sql动作也作监控。
    pg_stat_statements.save = true,表示当postgresql停止时,把信息存入磁盘文件以备下次启动时再使用。

    重新启动 postgresql,创建sql语句:
    create extension pg_stat_statements;

    查询哪些sql语句执行效率慢:
    1. SELECT  query, calls, total_time(total_time/callsas average ,rows
    2.         100.0 * shared_blks_hit /nullif(shared_blks_hit + shared_blks_read, 0AS hit_percent 
    3. FROM    pg_stat_statements 
    4. ORDER   BY average DESC LIMIT 10;
    统计结果一直都在,重启也不会清零,那么统计结果如何清零重新统计呢?执行下面SQL即可:
      1. select pg_stat_statements_reset(;
    
    

    表 F-20. pg_stat_statements 字段代表的含义

    名字类型参考描述
    userid oid pg_authid.oid

    执行该语句的用户的OID

    dbid oid pg_database.oid 执行该语句的数据库的OID
    query text   有代表性的语句的文本 (多达 track_activity_query_size 字节)
    calls bigint   执行的次数
    total_time double precision   该语句花费的总时间,以毫秒计
    rows bigint   该语句恢复或影响的行的总数
    shared_blks_hit bigint   该语句命中的共享块缓存的总数
    shared_blks_read bigint   该语句读取的共享块的总数
    shared_blks_dirtied bigint   该语句弄脏的共享块的总数
    shared_blks_written bigint   该语句写入的共享块的总数
    local_blks_hit bigint   该语句命中的本地块缓存的总数
    local_blks_read bigint   该语句读取的本地块的总数
    local_blks_dirtied bigint   该语句弄脏的本地块的总数
    local_blks_written bigint   该语句写入的本地块的总数
    temp_blks_read bigint   该语句读取的临时块的总数
    temp_blks_written bigint   该语句写入的临时块的总数
    blk_read_time double precision   该语句读取块花费的总时间,以毫秒计 (如果启用了track_io_timing,否则为0)
    blk_write_time double precision   该语句写入块花费的总时间,以毫秒计 (如果启用了track_io_timing,否则为0)
     
     
  • 相关阅读:
    自顶向下的单元测试策略
    孤立的测试策略
    单元测试
    控制流与数据流,信息流
    白盒测试的特点
    白盒测试
    黑盒测试优缺点
    appium对博客园APP进行自动化测试
    招聘测试人员,我在面试什么?
    测试开发这一年
  • 原文地址:https://www.cnblogs.com/junrong624/p/10008703.html
Copyright © 2020-2023  润新知