开发者社区> 问答> 正文

PostgreSQL如何查看慢SQL?

如题

展开
收起
明虚 2015-12-18 00:44:30 12192 0
3 条回答
写回答
取消 提交回答
  • 一个PGer

    pg_stat_statements 只是记录一些统计信息,如果想知道运行时语句的当时执行计划,那么需要配置auto_explain插件,这个会记录大于你指定时间SQL语句的执行计划,更有利于分析SQL语句。

    2019-07-16 11:49:50
    赞同 展开评论 打赏
  • 阿里云数据库团队产品与内核开发,HybridDB for PostgreSQL / RDS for PostgreSQL / RDS for PPAS

    目前RDS For PG的用户也可以采用pg_stat_statements插件来查询慢SQL。如:

    select total_time / calls as avg, * from pg_stat_statements order by avg DESC;

    关于pg_stat_statements更详细的,可以参考这里:

    1. http://www.postgresql.org/docs/9.4/static/pgstatstatements.html
    2019-07-16 11:49:50
    赞同 1 展开评论 打赏
  • 公益是一辈子的事, I am digoal, just do it. 阿里云数据库团队, 擅长PolarDB, PostgreSQL, DuckDB, ADB等, 长期致力于推动开源数据库技术、生态在中国的发展与开源产业人才培养. 曾荣获阿里巴巴麒麟布道师称号、2018届OSCAR开源尖峰人物.
    有几种情况  
    1. 查看历史慢SQL  
    首先要设置log_min_duration_statement,记录慢SQL。  
    然后在参数log_directory 指定的目录中查看日志。  
    
    2. 查看当前慢SQL  
    例如查询执行时间超过1秒的SQL  
    select * from pg_stat_activity where state<>'idle' and now()-query_start > interval '1 s' order by query_start ;  
    2019-07-16 11:49:50
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载