Postgresql 模块插件之pg_stat_statements

news/2024/7/9 19:38:18 标签: postgresql, 数据库

相关链接:
pgsql编译安装
pgBouncer连接池

一、说明

pg_stat_statements 提供了跟踪服务器执行的所有 SQL 语句的规划和执行统计信息的方法。当 pg_stat_statements 处于活动状态时,它会跟踪服务器上所有数据库的统计信息。该模块收集到的统计数据可以通过一个名为 pg_stat_statements 的视图进行访问。

官方文档:pg_stat_statements文档

二、插件安装启动

(一)编译安装

源码在pgsql包里就提供了,可以在编译pgsql的时候就安装,也可以随后编译

1.进入到pgsql安装包目录

只需要编译这个组件就行,进入到解压的pgsql安装包目录

cd /usr/local/postgresql-xxx

该插件是自带的

cd contrib/pg_stat_statements

2.编译安装

make && make install

(二)修改配置文件

postgresqlconf_26">1.编辑postgresql.conf文件

默认编译安装后的目录为下面的,如果不是用的默认,使用find查找

vi /var/pgsqldata/postgresql.conf

找到 Add settings for extensions here,在下面写插件的参数

2.添加以下内容

具体每条有说明

## 加载模块
shared_preload_libraries='pg_stat_statements'
 
## 跟踪IO消耗的时间
track_io_timing = on

## 单条SQL的最长长度
track_activity_query_size = 2048

## 最多保留多少条信息
pg_stat_statements.max = 10000           

## 嵌套sql设置
## 参数值:all - (所有SQL), top-函数内的sql不被跟踪, none - (不跟踪)
pg_stat_statements.track = all           

## 是否跟踪非DML语句
pg_stat_statements.track_utility = off   

## 重启后是否保留统计信息  
pg_stat_statements.save = on             

3.重启pgsql

systemctl restart pgsql

(三)启用插件并检查

1.在需要的数据库中启用

使用pgsql管理工具或者在psql命令行里输入

create extension pg_stat_statements; 

2.检查

上面的命令没有错误即说明没问题

三、应用

启用后,需要在sql中查询结果

1.最耗IO的sql统计

最耗IO的20条

select userid::regrole, dbid, query from pg_stat_statements order by (blk_read_time+blk_write_time)/calls desc limit 20;  

2.最耗时的sql统计

最耗时的20条

select userid::regrole, dbid, query from pg_stat_statements order by mean_time desc limit 20;  

3.最耗共享内存的sql统计

最耗内存的20条

select userid::regrole, dbid, query from pg_stat_statements order by (shared_blks_hit+shared_blks_dirtied) desc limit 20;  

4.最耗空间的sql统计

最耗空间的20条

select userid::regrole, dbid, query from pg_stat_statements order by temp_blks_written desc limit 20;

http://www.niftyadmin.cn/n/5056563.html

相关文章

MyBatis-Plus的乐观锁插件(Springboot版)

当要更新一条记录的时候,希望这条记录没有被别人更新 乐观锁实现方式: 取出记录时,获取当前 version更新时,带上这个 version执行更新时, set version newVersion where version oldVersion如果 version 不对&#x…

深入推导理解sample softmax loss

文章目录 何为logitloss中的logit修正NCE losssample softmax losssample softmax推导过程理解logit修正部分参考资料 查看TensorFlow关于nce loss和sample softmax loss时,发现都会对logit进行修正。为了搞清楚为什么需要对logit修正,以及为什么可以这样…

【面试】卡夫卡Kafka相关

Kafka(发音为卡夫卡)是一种开源的流式处理平台和消息代理系统,最初由LinkedIn开发,并于2011年成为Apache软件基金会的顶级项目。Kafka被设计用于高吞吐量、持久性和可扩展性的数据流处理。 以下是 Kafka 的一些主要特点和概念&am…

深入理解常见应用级算法思想

1 概论 1.1 概念 1.1.1 数据结构 1)概述 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。 2)划分 从关注的维度…

oracle存储过程的优缺点

定义: 存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要…

Python函数:chr()和ord()

两个函数是基于Unicode编码表进行进行字符与字码之间的转换。 chr()函数是通过字码转换成字符: 如图,坐标(1,4e10)丑 使用chr需要线将坐标相加得到:4e11 chr默认传入10进制的字码. 如图是各进制的字码。 也可以传入其他进制,不过需要在前面传入的参数最前…

Python 中的字符串基础与应用

在Python中,字符串可以用单引号或双引号括起来。‘hello’ 与 “hello” 是相同的。您可以使用print()函数显示字符串文字: 示例: print("Hello") print(Hello)将字符串分配给变量是通过变量名后跟等号和字符串完成的&#xff1a…

vue2 provide/inject watch 监控inject中值变化

在Vue 2.x中,使用inject注入的值默认情况下是不能被watch直接监控到的,因为inject提供的值不是响应式的。这是Vue 2.x的设计,与Vue 3.x中的provide和inject不同,Vue 3.x中的inject提供的值是响应式的,可以直接被watch监…