概述

今天主要介绍一下PG一个很重要的模块--pg_stat_statements模块,对于做性能观察还是很不错的。


一、pg_state_statements模块简介

1、简介

pg_stat_statements模块提供一种方法追踪一个服务器所执行的所有 SQL 语句的执行统计信息,可以用于统计数据库的资源开销,分析TOP SQL。
该模块必须通过在postgresql.conf的shared_preload_libraries中增加pg_stat_statements来载入,因为它需要额外的共享内存。
这意味着增加或移除该模块需要一次服务器重启。
当pg_stat_statements被载入时,它会跟踪该服务器 的所有数据库的统计信息。
该模块提供了一个视图 pg_stat_statements以及函数pg_stat_statements_reset 和pg_stat_statements用于访问和操纵这些统计信息。
这些视图和函数不是全局可用的,但是可以用CREATE EXTENSION pg_stat_statements 为特定数据库启用它们。

2、字段含义

pg_stat_statements字段列含义如下

3、常用函数

 pg_stat_statements_reset() returns void

pg_stat_statements_reset丢弃目前由pg_stat_statements统计的所有信息,默认情况下,这个函数只能运行在超级用户下。

4、常用变量

1)pg_stat_statements.max(integer)

pg_stat_statements.max是最大追踪的统计数据数量(即,视图中的最大行数)。如果数据量大于最大值,那么执行最少的语句将会被丢弃(本人测试,如果语句执行次数都为1时,其次是时间久的数据被丢弃),这个值默认是1000,这个变量在服务启动前设置。

2)pg_stat_statements.track(enum)

pg_stat_statements.track控制统计数据规则,top用于追踪top-level statement(直接由客户端方发送的),all还会追踪嵌套的statements(例如在函数中调用的statements)

3)pg_stat_statements.track_utility(boolen)

pg_stat_statements.track_utility控制是否跟踪公共程序命令(utility commands),公共程序命令是SELECT/INSERT/UPDATE/DELETE以外的命令,默认值是开启,只有超级用户可以更改此设置。

4)pg_stat_statements.save(boolean)

pg_stat_statements.save指定在服务器关闭时,是否保存统计信息。如果设置off,服务关闭时,统计信息将不会保存。默认值是on。这个值只能够在postgresql.conf中或者命令行设置。

该模块需要额外的共享内存,内存大小大致为pg_stat_statements.max* track_activity_query_size。要注意的是,一旦模块被加载,即使pg_stat_statements.track设置为none,共享内存都会被消耗。


二、安装pg_stat_statements

1、编译安装pg_stat_statements模块

pg_stat_statements是PostgreSQL的核心插件之一,可以在编译PostgreSQL时安装,也可以单独安装。如果$pgpath/share/extension目录下存在pg_stat_statements--1.0.sql,说明安装成功了

find / -name 'pg_stat_statements'cd /opt/software/postgresql-12.2/contrib/pg_stat_statementsmake && make install

2、修改配置文件postgresql.conf

$ vim /data/pgdata/data/postgresql.conf====================================================================================#------------------------------------------------------------------------------# PG_STAT_STATEMENTS OPTIONS#------------------------------------------------------------------------------shared_preload_libraries = 'pg_stat_statements' #加载pg_stat_statements模块track_io_timing = on              #跟踪IO消耗的时间pg_stat_statements.max = 10000    #最多保留多少条统计信息,通过LRU算法,覆盖老的记录。pg_stat_statements.track = all    #all:所有SQL包括函数内嵌套的SQL,top:直接执行的SQL(函数内的sql不被跟踪),none:不跟踪pg_stat_statements.track_utility=on # 是否跟踪非DML语句 (例如DDL,DCL),on表示跟踪, off表示不跟踪pg_stat_statements.save = on      # 重启后是否保留统计信息 #track_activity_query_size = 2048  #设置单条SQL的最长长度,超过被截断显示

3、重启PG服务

cd /opt/postgres/bin./pg_ctl restart -m fast./pg_ctl status

4、加载pg_stat_statements模块

到这里就完成pg_stat_statements模块安装了。

./psqlcreate extension pg_stat_statements; dx

觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

sql statements_Postgresql监控sql模块之pg_stat_statements模块--部署篇相关推荐

  1. SpringBoot 如何统计、监控 SQL运行情况?

    点击关注公众号,实用技术文章及时了解 来源:juejin.cn/post/7062506923194581029 1 基本概念 Druid 是Java语言中最好的数据库连接池. 虽然 HikariCP ...

  2. SpringBoot使用Druid监控SQL

    文章目录 1 监控mybatis下SQL 1.1 Druid简介 1.2 添加pom.xml依赖 1.3 配置相关属性 1.3.1 如何配置 Filter 1.4 监控页面 1.5 sql监控 1.6 ...

  3. springboot整合druid 监控sql

    介绍 Druid是阿里巴巴开发的号称为监控而生的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBoss DataSource等 ...

  4. 集中化监控SQL Server数据库

    英文原文地址:https://www.simple-talk.com/sql/database-administration/centralize-your-database-monitoring-p ...

  5. UAVStack的慢SQL数据库监控功能及其实现

    作者:王林林 转载自:UAVStack智能运维 来源:宜信技术学院 技术沙龙001期|AI中台:一种敏捷的智能业务支持方案|宜信技术沙龙 3月28日晚8点线上直播,点击报名 UAVStack是一个全维 ...

  6. SQL Server 监控系列(文章索引)

    一.前言(Introduction) SQL Server监控在很多时候可以帮助我们了解数据库做了些什么,比如谁谁在什么时候修改了表结构,谁谁在删除了某个对象,当这些事情发生了,老板在后面追着说这是谁 ...

  7. ORACLE常用性能监控SQL【一】

    目录(?)[+] 系列 ORACLE常用性能监控SQL[一] ORACLE常用性能监控SQL[二] Oracle-动态性能视图解读 系列 死锁后的解决办法 生成Kill Session语句 查看导致死 ...

  8. sql server监控

    sql server监控 http://www.mssqltips.com/sqlservertip/2522/sql-server-monitoring-checklist/ 1.查看sql ser ...

  9. 第三篇——第二部分——第六文 监控SQL Server镜像

    原文: 第三篇--第二部分--第六文 监控SQL Server镜像 原文出处:http://blog.csdn.net/dba_huangzj/article/details/26846203 要优化 ...

最新文章

  1. 【LaTeX】E喵的LaTeX新手入门教程(4)图表
  2. bzoj4592[SHOI2015]脑洞治疗仪
  3. git lfs出现This repository is over its data quota
  4. 度量时间差和jiffies计数器
  5. 使用Tomcat Catalina进行Tomcat服务器虚拟目录设置
  6. php使用file_get_contents 或者curl 发送get/post 请求 的方法总结
  7. bde连接mysql设置,delphi通过BDE方式连接数据库以及程序Demo
  8. ISO27001标准的起源和发展
  9. 玩转华为ENSP模拟器系列 | 接入用户采用Windows7客户端通过IKEv2方式接入总部VdPdNd(采用证书认证方式)
  10. 怎么用java做日历_怎么用java做日历?实例讲解
  11. sim7600ce使用MQTT协议总结
  12. linux tty字体,ArchLinux TTY 中文字体渲染
  13. [NOIP2003]侦探推理 详解+python实现
  14. 最大后验概率、最大似然、期望最大化
  15. java方法返回值_如何高效率的学习Java函数返回值
  16. 【GraphMaker】Unity3D图表——柱状图、折线图、饼图
  17. 如何轻松的将文字转语音
  18. c语言图像处理傅里叶函数,数字图像的傅里叶变换.doc
  19. 基于 Vue 的直播播放器实战
  20. ios蓝牙扫描指定的设备scanForPeripheralsWithServices

热门文章

  1. 002编程基础----makefile
  2. 操作系统——文件的逻辑结构
  3. linux网络编程——客户端编程
  4. 计算机网络——物理层基本概念
  5. linux的驱动开发——内核模块的编译
  6. 下取整函数的含义_取整函数解读
  7. c++ map 自定义排序_Java学习笔记:Map集合介绍
  8. 270 扩展固态硬盘_游戏人的扩展坞应该是怎样?
  9. assign深拷贝_Object.assign 深拷贝?浅拷贝?
  10. android 进程管理机制,Android的进程管理机制