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或者函数很慢, 这样 就能 够对 症下  了,要不然真是找不原因,很耗 费时间 
  • 相关阅读:
    HCL AppScan Standard 9.0.3.13
    appscan 9.0.3.12 版本下载--补丁验证---win10 验证OK
    appscan 9.0.3.10 版本及补丁下载
    appscan 历史版本下载
    Python 批量文件下载
    广告URL
    Linux 修改hostname几种方式
    Kali系统 metasploit 使用教程
    Metasploit
    NIKTO
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276626.html
Copyright © 2011-2022 走看看