sql statements_Postgresql监控sql模块之pg_stat_statements模块--部署篇

概述

今天主要介绍一下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字段列含义如下

1403acc641ff4ef70f7def343c26f5dc.png
c55ef836d4ebbecbbf0071bc019ead83.png
37a4748723d85c2113094423b1a8cd2d.png

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
96f2734667f919f14372ab081746e321.png
58bd44c36bc607f5ada11bab53997a60.png
821b376f831d718d68a2c8e2e6ae0f3b.png

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
4a2efe0988e2a9714e2f2a7a2dfb5542.png

4、加载pg_stat_statements模块

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

./psqlcreate extension pg_stat_statements; dx
7b708112eb55e2b319ef7f6e465d0be9.png

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

fae4ffe34ab35988d5d1787383f320d2.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode 文件夹中查找_VSCode 多文件搜索和替换

本文目录结构VSCode 多文件搜索和替换虽然在“基础入门”这个部分中,我们一直都在介绍编辑器的各种功能,但是,为了把搜索这样的一个功能介绍完整,我们今天就再讲一下在 VS Code 当中如何使用多文件搜索。关于 VSCode 单文件搜索和…

linux服务配置大全 fedora 8 ftp 百度文库,Linux下VSFTP配置全攻略

Linux下VSFTP配置全攻略[日期:2007-10-05]来源:Linux公社作者:Linuxidc[字体:大 中 小]4]如果要以系统中存在的普通用户登入FTP,也没有什么可以设置的,添加一个用户就行。比如我要添加beinan这个用户&#…

collector list 多个分组_Java 8嵌套(多级)分组依据

您不能通过多个键对单个项目进行分组,除非您接受该项目可能会出现在多个组中。在这种情况下,您想要执行一种flatMap操作。实现此目的的一种方法是Stream.flatMap与临时对一起使用,以容纳和的组合,Item然后SubItem再进行收集。由于…

sqlserver 还原bak文件 查看不到_SQL server中用T-SQL语句实现(建库,分离,附加,备份,还原)...

会用图形界面创建后,今天可以学习用T-SQL来创建数据库及对数据库的操作。一. T-SQL 创建数据库--创建数据库create database MySchool--创建数据库 数据库名称MySchoolon primary(--创建主数据库文件nameMySchool_data,--主数据库文件名称fileNameD:MySchool_data.m…

win7变成linux桌面背景,教大家把Ubuntu界面改造成Windows7系统

经常使用windows7系统的用户可能比较喜欢windows7系统强大的系统界面,下面就教大家如何使Ubuntu看起来像Windows 7系统的界面,具体内容如下所述,Ubuntu自身拥有相当不错的主题系统、视觉效果和养眼的画面,但你可能喜欢windows7的A…

深交所a股证券代码_深市和沪市的股票代码应该怎么区别?

展开全部深市和沪市的股票代码的区别如下:1、沪市A股票买卖的代32313133353236313431303231363533e78988e69d8331333365666266码是以600或601打头,如:运盛实业,股票代码是600767,中国国航(7.72,0.32,4.32%)是601111。B…

怎么通过MQTT查看数据是否上云端_设备工程师们的福利来啦!JSON数据采集网关帮你实现云端对接~...

JSON数据采集网关是一种能够将各种传感器的数据采集后按照JSON格式上传服务器的网关。图 JSON数据采集网关工作原理示意图JSON(JavaScript Object Notation)是java中的数据格式。例如{“power”:”100”, “time”:”10:12:23”}这样的格式,由于它简单易用&#xff…

小爱音响调用php接口_PHP调用语音合成接口

百度TTS 语音合成//百度文件转换成语音private function toSpeech($text){define(DEMO_CURL_VERBOSE, false);$obj["status">0,"msg">"","file_name">""];//获取秘钥$apiKey Config::get(apiKey);$secretKey Con…

oracle 会话数上不去_Oracle初识

1、基本概念oracle数据库是一个物理概念,oracle实例是数据库在内存中的镜像,属于一种逻辑概念。oracle数据库与oracle实例至少是一对一的关系,也可能是一对多关系(oracle集群:RAC real application cluster&#xff09…

trace Linux and实例,traceroute在linux中的使用方法

traceroute在linux中的使用方法一、traceroute的实现原理1、IP协议利用存活时间TTL来发出探测包跟踪数据包到达目标ip主机所经历的路由网关数量,每经过一个路由器,TTL的值就减去1。当TTL值为0时,主机就取消发送数据包,并回传一份I…

js 点击闭包_学习Javascript闭包(Closure)

讲的很清楚明了,连我都懂了,要是我们大学时的老师也能这么讲课。。。他们只会放幻灯片2009年8月30日 22:29| #| 引用2009年8月30日 22:44| #| 引用呵呵,可以作为面试题了!2009年8月31日 09:30| #| 引用十三说:闭包个人…

在VS中怎么用vb画矩形_(十四)矩形和操作展示逻辑操作

时间为友,记录点滴。聊了这么多的图片运算,忽然有个想法,为什么非要用静态的图片来展示运算呢?我们可以用自己做的图片来经过运算后显示出来。说干就干。先想一下需求:整体环境非黑即白。可以用鼠标在背景上画出矩形&a…

linux文件传输到另一台linux,使用scp将文件/目录拷贝到另一台Linux主机上

如何将一台Linux主机上的文件或目录拷贝到另一台Linux主机上,scp命令可以实现该需求前提条件:两台Linux主机处于同一网段,可以互相ping通操作如下:文件拷贝①将本地文件拷贝到远端主机上scp 待拷贝的文件 远端主机用户名远端主机I…

python结构化数据_python新手入门必备—— 使用json保存结构化数据

【摘要】使用 json 保存结构化数据时,字符串可以很轻松地写入文件并从文件中读取出来。数字可能会费点劲,因为 read() 方法只能返回字符串,这些字符串必须传递给类似 int() 的函数,它会接受类似 123 这样的字符串并返回其数字值 1…

c++ 二维数组 排序_漫画:“排序算法” 大总结

​冒泡排序:漫画:什么是冒泡排序?​mp.weixin.qq.com选择排序:漫画:什么是选择排序?​mp.weixin.qq.com插入排序:漫画:什么是插入排序?​mp.weixin.qq.com此外还有冒泡排…

c语言线程经常段错误的是,由pthread_create引起的段异常

由pthread_create引起的段错误一般线程的结束是由进程内的其他线程来结束的,调用pthread_cancel.但是需要考虑到被结束线程的性质,一方面,线程是可被结束,也可无法结束,即不响应该信号;另一方面&#xff0c…

python request url编码_Python 爬虫 (requests) 发送中文编码的 HTTP POST 请求

向往常一样发送POST请求出现错误网站信息表单页面结果网页使用 gb2312 编码使用 requests 发送 post 请求In [2]: import requestsIn [3]: from bs4 import BeautifulSoup as BSIn [4]: url http://example.com/ip/search.aspIn [5]: data {...: loudong: 女生九栋,...: fang…

python坐标定位_如何利用Python识别并定位图片中某一个色块的坐标?

依赖python包|opencv、numpy、aircv 第一步:查找图片在原始图片上的坐标点 import aircv as ac def matchImg(imgsrc,imgobj,confidencevalue0.5):#imgsrc原始图像,imgobj待查找的图片 imsrc ac.imread(imgsrc) imobj ac.imread(imgobj) match_result …

centos7打开图形界面命令_centos7标准版(DVD)命令界面和图形界面相互切换

1、root登陆终端2、输入命令 vi /etc/inittab ,查看两种界面的启动模式:vi /etc/inittab3、退出vi模式,,输入命令systemctl get-default 查看当前系统启动模式;我的是命令界面模式为:multi-user.target;4、…

为什么编程语言要从c语言学起,在那么多编程语言中,为什么推荐初学者学 C 语言?...

如果你学过了计蒜客的《编程初学入门常识》的课,你就会知道,一个汇编写的操作系统,是没有办法在不同的计算机上普适使用的。所以呢,Ken 和 Dennis 为了让更多人在非 PDP-7 小型机的计算机上也玩上《星际旅行》的游戏,决…