资讯专栏INFORMATION COLUMN

Postgresql性能分析快速入手

IT那活儿 / 2229人阅读
Postgresql性能分析快速入手


 1.新接触一个库,如何发现潜在SQL问题


Postgresql9.2版本以后都存在一个模块pg_stat_statements

启用pg_stat_statements

Altersystemshared_preload_libraries =pg_stat_statements;

CREATEEXTENSIONpg_stat_statements;


小知识点

Altersystem命令修改参数.使用AlterSystem命令将修改postgresql.auto.conf文件,而不是postgresql.conf,这样可以很好的保护postgresql.conf文件,数据库读取参数文件的会优先读取postgresql.auto.conf,如果以后觉得不需要了,可以直接删除postgresql.auto.conf文件回归初始环境



 2.检测慢语句


select userid::regrole, dbid, query frompg_stat_statements order by total_timedesc limit 5;

部分效果如下:

按照时间消耗由大到小排序更有列于我们分辨,前十的语句我们都应该重点关注,

如果不查看数据库服务器上最耗时的查询,就无法调整系统



 3.深入了解下pg_stat_statements视图内容


pg_stat_statements提供的不仅是查询及其消耗的时间。这是视图的结构

dpg_stat_statements

                 View "pg_catalog.pg_stat_statements"

       Column        |       Type       | Collation | Nullable | Default 

---------------------+------------------+-----------+----------+---------

 userid              | oid              |           |          | 
 dbid                | oid              |           |          | 
 queryid             | bigint           |           |          | 
 query               | text             |           |          | 
 calls               | bigint           |           |          | 
 total_time          | double precision |           |          | 
 min_time            | double precision |           |          | 
 max_time            | double precision |           |          | 
 mean_time           | double precision |           |          | 
 stddev_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 |           |          | 
 blk_write_time      | double precision |           |          | 




 4.一条SQL查询来检测PostgreSQL的瓶颈


SELECTsubstring(query,1, 50) ASshort_query,

              round(total_time::numeric,2) AStotal_time,

              calls,

              round(mean_time::numeric,2) ASmean,

              round((100* total_time / sum(total_time::numeric)OVER ())::numeric,2) ASpercentage_cpu

FROM pg_stat_statements

ORDERBYtotal_timeDESC

LIMIT20;

最后一列特别值得注意:它告诉我们单个查询消耗的总时间的百分比。这将帮助确定单个语句是否与整体性能相关


小知识
x可以开启友好显示,与MySQL中的语句后加G有异曲同工之妙


END


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129979.html

相关文章

  • 使用docker部署PostgreSQL数据库

    摘要:解决了服务器应用快速部署的问题。解决方案是自己装一个第二点,确保镜像服务器跑起来。你需要将真机的端口和虚拟机端口进行绑定,这样可以通过访问镜像服务器在真机上的端口,访问到数据库端口,进入镜像之中。 关于Docker的基本原理 原理上, 深入浅出Docker 一文讲的语言会更科学,我只捡不一定准确但直观而符合表面理解的一些讲一下。 Docker提供了基于操作系统级和应用级虚拟化的应用部署...

    singerye 评论0 收藏0
  • 使用docker部署PostgreSQL数据库

    摘要:解决了服务器应用快速部署的问题。解决方案是自己装一个第二点,确保镜像服务器跑起来。你需要将真机的端口和虚拟机端口进行绑定,这样可以通过访问镜像服务器在真机上的端口,访问到数据库端口,进入镜像之中。 关于Docker的基本原理 原理上, 深入浅出Docker 一文讲的语言会更科学,我只捡不一定准确但直观而符合表面理解的一些讲一下。 Docker提供了基于操作系统级和应用级虚拟化的应用部署...

    Loong_T 评论0 收藏0
  • PostgreSQL UDB,让31会议数据管理更高效可靠

    摘要:相比自建,其可靠性更高,方便运维维护。宋体经过审慎考虑,用户同时选用三种数据库,针对性的满足不同目标。宋体宋体其中,相比于在上的快速高效是其优势,也是用户选型的重要砝码。PostgreSQL UDB用在大数据分析上,查询效率更高。相比自建,其可靠性更高,方便运维维护。 — 31会议运维经理 汤雷 如何用好PostgreSQL? PostgreSQL是业内一款十分流行的开源数...

    vspiders 评论0 收藏0
  • 到底选择PostgreSOL还是MySQL?看这里

    摘要:经过对比选型,用户同时选用三种数据库来针对性的满足不同目标。基于能够带来的这些特性优势,用户选择了。相比自建,其可靠性更高,方便运维维护。整个过程中用户不需要任何人工干预和配置修改,真正做到自动容灾。 据DB-Engines 最新发布的2019年8月份数据库流行度排行榜(如下图)显示,名列前茅的MySQL和PostgreSQL数据库的流行趋势与去年同期相比依然稳增不减。 showImg...

    沈俭 评论0 收藏0
  • 大佬为你揭秘微信支付的系统架构,你想知道的都在这里了

    摘要:年之前,微信支付业务快速发展,需要一款数据库能够安全高效的支撑微信支付商户系统核心业务,这个重任落在了腾讯数据库团队自研上。由于是用于微信支付的核心数据库,腾讯被定位为安全高效,稳定,可靠的数据库集群。 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由李跃森发表于云+社区专栏李跃森,腾讯云PostgreSQL首席架构师,腾讯数据库团队架构师,负责微信支付商户系统核心数...

    Terry_Tai 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<