获取慢查询的方法

方法一 :开启慢查询日志

方法二 :使用pg_stat_statementes扩展(推荐)

方法三 : 捕获当前连接中的查询

开启慢查询日志

postgresql.conf

log_destination = 'csvlog'           #日志基础设置

logging_collector = on                #日志基础设置(重启生效)

log_directory = 'pg_log'              #日志基础设置

log_filename = 'postgresql-%Y-%m-%d.log'   #日志基础设置

log_file_mode = 0600                 #日志基础设置

log_truncate_on_rotation = off   #日志基础设置

log_rotation_age = 1d                #日志基础设置

log_rotation_size = 0                 #日志基础设置

log_statement = none                #需要记录的语句,默认只记录错误日志。none,ddl,mod,all

log_min_duration_statement = 500   #慢查询最小时长,毫秒。log_statement=all同时设置时失效

shared_preload_libraries = 'auto_explain'       #只需要编译,不需要安装扩展

auto_explain.log_min_duration = 1s               #超过时长的慢查询,给出执行计划

postgres=# select pg_reload_conf();

针对某个用户或数据说库进行设置

postgres=# alter database db_name set log_min_duration_statement=5000;

postgres=# alter user user_name set log_min_duration_statement=1000;

pg_stat_statementes扩展(推荐)

pg_stat_statements 模块提供了跟踪服务器执行的所有SQL语句的执行统计信息的方法。如果想要开启模块,必须在配置文件中将 pg_stat_statements 添加到 shared_preload_libraries中。因为它需要额外的共享内存,所以必须重启服务添加或删除。当 pg_stat_statements 被加载,会跟踪服务器所有的数据库的统计信息。

为了安全,只有superuser和 pg_read_all_stats role 用户可以访问 SQL text 和 queryid。其他用户可以访问 statistics。

根据内部哈希计算具有相同的查询结构,可计划查询(即SELECT,INSERT,UPDATE和DELETE)就会合并到单个pg_stat_statements条目中。 通常,如果两个查询在语义上等效,则除了查询中出现的文字常量的值之外,它们将被视为相同。 但是,实用命令(即所有其他命令)严格地根据其文本查询字符串进行比较。

安装配置及使用

安装

cd pg_soft/contrib/pg_stat_statements

make && make install

postgres=# create extension pg_stat_statements;

重要配置

shared_preload_libraries='auto_explain,pg_stat_statements'

log_min_duration_statement = 100     #慢查询最小时长,毫秒

track_activity_query_size = 10000     #SQL文本的最大长度

pg_stat_statements.max = 10000     #跟踪模块中最多保留多少条统计信息,通过LRU算法。

pg_stat_statements.track = all      #all包括函数内的SQL, top不包含函数内的sql), none

pg_stat_statements.track_utility = true     #是否跟踪非DML语句 (例如DDL,DCL)

pg_stat_statements.save = true     #表示当pg停止时,把信息存入磁盘文件。

使用

#重置统计信息

select pg_stat_statements_reset() ;

#最慢的TOP10

SELECT * FROM pg_stat_statements order by total_time desc limit 10;

pg_stat_statements 字段代表的含义

名字

参考

描述

userid

pg_authid.oid

执行该语句的用户的OID

dbid

pg_database.oid

执行该语句的数据库的OID

query

有代表性的语句的文本

calls

执行的次数

total_time

该语句花费的总时间,以毫秒计

rows

该语句恢复或影响的行的总数

shared_blks_hit

该语句命中的共享块缓存的总数

shared_blks_read

该语句读取的共享块的总数

shared_blks_dirtied

该语句弄脏的共享块的总数

shared_blks_written

该语句写入的共享块的总数

local_blks_hit

该语句命中的本地块缓存的总数

local_blks_read

该语句读取的本地块的总数

local_blks_dirtied

该语句弄脏的本地块的总数

local_blks_written

该语句写入的本地块的总数

temp_blks_read

该语句读取的临时块的总数

temp_blks_written

该语句写入的临时块的总数

blk_read_time

该语句读取块花费的总时间,以毫秒计 (如果启用了track_io_timing,否则为0)

blk_write_time

该语句写入块花费的总时间,以毫秒计 (如果启用了track_io_timing,否则为0)

捕获当前连接中的查询

select *

from pg_stat_activity

where state<>'idle' and now()-query_start > interval '1 s' order by query_start ;

若有收获,就点个赞吧

PostgreSQL 慢查询获取相关推荐

  1. PostgreSQL并行查询介绍

    [导语]2016年4月,PostgreSQL社区发布了PostgreSQL 9.6 Beta 1,迎来了并行查询(Parallel Query)这个新特性.在追求高性能计算和查询的大数据时代,能提升性 ...

  2. 规格选项表管理之查询获取规格选项表列表数据

    规格选项表管理 在规格选项表中我们需要对规格选项表数据进行增删改查操作,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作 查询获取规格选项表列表数据 接口分析 请求方式: GET ...

  3. SPU表管理之查询获取SPU表列表数据

    SPU表管理 在SPU表中我们需要对SKU表数据进行增删改查操作,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作 查询获取SPU表列表数据 在获取sku数据时,我们在请求中包含 ...

  4. SKU表管理之查询获取sku表列表数据

    SKU表管理 在sku表中我们需要对SKU表数据进行增删改查操作,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作 查询获取sku表列表数据 [商品的详细信息,要引入事务的管理, ...

  5. 规格表管理之查询获取规格表列表数据

    规格表管理 在规格表中我们需要对规格表数据进行增删改查操作,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作 查询获取规格表列表数据 接口分析 请求方式: GET /meiduo ...

  6. 用户管理之用户的查询获取

    用户管理 在用户页面我们需要完成两个功能: 1.用户信息的查询获取 2.增加用户 用户的查询获取 [获取单一数据和多个数据可以通过判断合并到一块写代码] 接口分析 请求方式:GET /meiduo_a ...

  7. python计算选手最后得分并取出前三名_MySQL中查询获取每个班级成绩前三名的学生信息...

    今天有同事说到了怎么MySQL中查询获取每个班级成绩前三名的学生信息,在网上查了查,然后写出代码,很快就OK了. CREATE TABLE t_testscore(    pk_id INT PRIM ...

  8. mysql查询班级作业提交情况_MySQL中查询获取每个班级成绩前三名的学生信息

    标签: 今天有同事说到了怎么MySQL中查询获取每个班级成绩前三名的学生信息,在网上查了查,然后写出代码,很快就OK了. CREATE TABLE t_testscore(    pk_id INT ...

  9. DICOM查询/获取信息模型的研究及关系数据库实现

    1  引言 随着我国医院数字化.信息化建设的发展,越来越多的医院需要对生成的医学影像进行高效的.自动化的管理和共享.使用医学图像管理与归档系统(PACS)可以满足这种需要,而DICOM3.0标准是设计 ...

最新文章

  1. 深度学习入门笔记,三流程序员如何凭借实力逆袭高薪?你不服不行!
  2. MYSQL数据文件--.frm文件(只有.frm文件时的表结构恢复)
  3. 图文结合!一文搞懂 Redis 常用知识点!
  4. IOC和DI的区别详解
  5. php高并发秒杀解决方案
  6. envi classic将不同影像裁剪成同一大小
  7. 3dmax导出unity3d模型设置
  8. B站陈睿团队以内容为王,百万UP主共同成长
  9. 《终身成长》读书分享(附思维导图)
  10. 用python爬取头条文章_AI第四课:Python爬取今日头条文章
  11. ajax实现文件的上传(局部刷新页面,文件上传)
  12. html显示统计图数据模板_博客统计信息显示模板
  13. 五子棋游戏AI智能算法设计
  14. java 从已知日期计算干支纪日_天干地支纪日怎么计算?
  15. rust卡领地柜权限_rust一个领地柜有多大范围 | 手游网游页游攻略大全
  16. MIT线性代数笔记二 矩阵消元
  17. Jim在2022的8760小时
  18. Windiws10系统不显示可用网络的处理方法!
  19. python学习——缺失值、重复值处理及替换
  20. 组合数学 ch4 生成排列和组合

热门文章

  1. 使用redis实现session共享
  2. 在地址栏输入url发生了什么,详细
  3. 无法启动 parallels desktop 缺少插件_手机资讯:iOS7.1.2越狱插件推荐:CCSliders亮度滑动条变万能神器...
  4. 概率论06 连续分布
  5. JS获取系统和浏览器信息
  6. 视频聊天源码,IOS 保存图片、视频到自定义相簿
  7. 地堡中的光照问题_扑扑和火力地堡的更新
  8. python结果四舍五入保留两位小数_Python-根据四舍五入精确保留小数位数的方法...
  9. java微博中评论模块怎么实战_用户操作之点赞、收藏、评论、删除微博功能实现二...
  10. 平安健康向4.0时代迈进,“渠道生态”找准长期增长方法论