zoukankan      html  css  js  c++  java
  • 转载: PostgreSQL SQL的性能调试方法1--借助统计信息

      原文:http://blog.csdn.net/hantiannan/article/details/4509231


    在数据库应用开发中,速度慢的SQL比比皆是。很多速度很慢都是SQL写的不好,效率不高。比如无用的循环查询,判断,不必要的子查询,写的SQL用不上索引等等。特别是数据量很大的时候,很是头疼。我就遇到过几千万条数据的表的查询,由于子查询过多,要几个小时才执行完。显然是不符合要求的。

       那 怎么改善呢?

       要解决 个速度 问题 ,我  首先最主要的是要找到那些SQL很慢,或者SQL中的那部分很慢。怎 样寻 找速度很慢的SQL,我  可以借助系  提供的 统计 信息功能来  找。
      1.pg_stat_user_functions :SQL文中用了存储过 程或者函数的情况,可以通 过这  统计 信息view来  看。
        funcid,schemaname, funcname :函数的ID 
        calls:  行回数 
        total_time :函数 行的   时间   位毫秒。
        self_time :不包含其他函数的  时间 的自己本身的   时间 。 
    例子:  
    =#SELECT * FROM pg_stat_user_functions;
      funcid | schemaname | funcname | calls |total_time | self_time
    --------+------------+----------+-------+------------+-----------
      16434 |public    | proc_1  |    4|       185|      185
      16738 |public    | proc_2  |    5|        91|       91
      16741 |public    | proc_3  |    2|        76|        5
    (3 rows)  
       
     里面我  可以看到proc_3自己自身  行的 时间      时间      时间 非常少,可以初步确定速度慢的函数不是proc_3。因此我就需要去 查询 其他函数的   时间 
       
    个机能系    是没有的,需要在postgresql.conf里面  置。默  是none。需要改  pl或者all。
        track_functions = pl # none, pl, all
       
    2.pg_stat_statements :contrib/pg_stat_statements模 下的机能,系    也是没有的。
        userid:  行SQL的用   
        dbid : 数据 ID 
        query : SQL文
        calls:  行回数 
        total_time:   总时间   位微秒。 
        rows:  理行数。返回的行数或者修改的行数。
       
    例子:  
    SELECT query, calls, total_time, rows
        FROM pg_stat_statements ORDER BY total_time DESC LIMIT 3;
    -[RECORD 1]------------------------------------------------------------
    query     | UPDATE branches SET bbalance = bbalance + $1 WHERE bid = $2;
    calls     | 3000
    total_time | 35.9654100
    rows      | 3000
       
    个功能也是需要在postgresql.conf里面  置。
        shared_preload_libraries ='pg_stat_statements'
        custom_variable_classes ='pg_stat_statements'
       
     上面的两种方法我  就可以找到那些SQL或者函数很慢, 这样 就能 够对 症下  了,要不然真是找不原因,很耗 费时间 
  • 相关阅读:
    【crontab】误删crontab及其恢复
    New Concept English there (7)
    New Concept English there (6)
    New Concept English there (5)
    New Concept English there (4)
    New Concept English there (3)
    New Concept English there (2)Typing speed exercise
    New Concept English there (1)Typing speed exercise
    New Concept English Two 34 game over
    New Concept English Two 33 94
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276626.html
Copyright © 2011-2022 走看看