Postgresql数据库运维统计信息

如果需要使用以下运维信息,需要如下几步

  • 修改postgresql.conf文件
#shared_preload_libraries = ''  # (change requires restart)shared_preload_libraries = 'pg_stat_statements'
  • 重启数据库
  • 创建扩展
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

1. 统计信息的收集维度配置

1.1. 关键配置

  • track_activities : 收集SQL执行开始时间以及SQL语句的内容,默认打开
  • track_activity_query_size : 指定统计信息中允许存储的SQL长度,超出长度的SQL被截断,默认1024
  • track_counts : 收集数据库的活动信息(如新增的行数和删除的行数等)
  • track_io_timing : 收集IO操作的时间开销,因为需要不断的调用系统当前时间,所以某些系统中会带来极大的开销,从而带来极大的负面影响。
  • track_functions : 跟踪函数的调用次数和时间开销
  • update_process_title : 每次服务端process接收到新的SQL时更新command状态。
  • log_statement_stats (boolean) – 类似unix的getrusage()操作系统函数, 用于收集SQL语句级的资源开销统计. 包含以下3种层面的 全部. 因此配置了log_statement_stats就不需要配置以下选项.
  • log_parser_stats (boolean) – 同上, 但是只包含SQL parser部分的资源开销统计.
  • log_planner_stats (boolean) – 同上, 但是只包含SQL planner部分的资源开销统计.
  • log_executor_stats (boolean) – 同上, 但是只包含SQL executor部分的资源开销统计.

1.2 其他配置

在这里插入图片描述

字段名字段类型字段信息描述
pg_stat_get_backend_idset()setof integer当前活动后端ID号的集合(从1到活动后端数量)
pg_stat_get_backend_activity(integer)text此后端最近查询的文本
pg_stat_get_backend_activity_start(integer)timestamp with time zone最近一次查询开始的时间
pg_stat_get_backend_client_addr(integer)inet与此后端连接的客户端的IP地址
pg_stat_get_backend_client_port(integer)integer客户端用于通信的TCP端口号
pg_stat_get_backend_dbid(integer)oid此后端所连接的数据库的OID
pg_stat_get_backend_pid(integer)integer后端进程ID
pg_stat_get_backend_start (integer)timestamp with time zone此过程开始的时间
pg_stat_get_backend_userid(integer)oid登录到该后端用户的OID
pg_stat_get_backend_waiting(integer)boolean如果此后端当前正在等待锁,则为True
pg_stat_get_backend_xact_start(integer)timestamp with time zone如果此后端当前正在等待锁,则为True

2. 常用的监控数据库活动的sql

2.1. 调用次数倒序输出

select * from pg_stat_statements order by calls desc limit 1 offset 0;

在这里插入图片描述

2.2. 单次SQL执行时间倒序输出

select * from pg_stat_statements order by total_exec_time/calls desc limit 10 offset 0;

在这里插入图片描述

2.3. 按shared buffer “未命中块读” 倒序输出

select * from pg_stat_statements order by shared_blks_read desc limit 10 offset 0;

在这里插入图片描述

2.4. 获取CPU time Top20的统计结果

export PGPORT=1921 
export PGDATA=/data01/pgdata/1921/pg_root 
export LANG=en_US.utf8 
export PGHOME=/opt/pgsql 
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib 
export DATE=`date +"%Y%m%d%H%M"` 
export PATH=$PGHOME/bin:$PATH:. 
export PGHOST=$PGDATA 
export PGDATABASE=postgres 
psql -A -x -c "select row_number() over() as rn, * from (select query,' calls:'||calls||' total_exec_time_s:'||round(total_exec_time::numeric,2)||' avg_time_ms:'||round(1000*(total_exec_time::numeric/calls),2) as stats from pg_stat_statements order by total_exec_time desc limit 20) t;" >/tmp/stat_query.log 2>&1 
echo -e "$DATE avcp TOP20 query report yest"|mutt -s "$DATE avcp TOP20 query report yest" -a /tmp/stat_query.log digoal@126.com 
psql -c "select pg_stat_statements_reset()
crontab -e1 8 * * * /home/postgres/script/report.sh

在这里插入图片描述

2.5. 查看数据库级统计信息

如数据库的 事务提交次数, 回滚次数, 未命中数据块读, 命中读, 行的统计信息(扫描, 输出,插入,更新,删除), 临时文件, 死锁, IOTIME等统计信息.

select tup_returned,tup_fetched from pg_stat_database where datname ='generalquery_frame';

在这里插入图片描述

字段名字段类型字段信息描述
datidid数据库OID
datanamename数据库Name
numbackendsinteger当前连接到此数据库的后端数量。这是该视图中唯一返回反映当前状态的值的列;所有其他列返回自上次重置以来的累积值
xact_commitbigint此数据库中已提交的事务数
xact_rollbackbigint此数据库中已回滚的事务数
blks_readbigint在此数据库中读取的磁盘块数目
blks_hitbigint磁盘块已经在缓冲缓存中被发现的次数,因此不需要读取(这只包括在PostgreSQL缓冲区中的命中)缓存,而不是操作系统的文件系统缓存)
tup_returnedbigint在此数据库中查询返回的行数
tup_fetchedbigint在此数据库中查询获取的行数
tup_insertedbigint查询在此数据库中插入的行数
tup_updatedbigint此数据库中查询更新的行数
tup_deletedbigint查询在此数据库中删除的行数
conflictsbigint由于与此数据库中的恢复冲突而取消的查询数。冲突只发生在备用服务器上;参见pa_stat_database_conflicts获取细节。)
temp_filesbigint查询在此数据库中创建的临时文件数。所有临时文件都会被计算在内,而不管临时文件是为什么创建的(例如:排序或散列),而不考虑日志临时文件的设置。
temp_bytesbigint在此数据库中查询写入临时文件的数据总量。所有临时文件都会被计算在内,而不管临时文件的原因是什么创建,而不考虑日志临时文件设置。
deadlocksbigint在此数据库中检测到的死锁数目
blk_read_timedouble precision后端在此数据库中读取数据文件块所花费的时间,以毫秒为单位
blk_write_timedouble precision后端在此数据库中写入数据文件块所花费的时间,以毫秒为单位
stats_resettimestamp_with这些统计数据最后重置的时间

2.6. 查看表级统计信息

区分全表扫描和索引扫描的次数和输出的行, 以及DML的行数, 评估的当前活动行数和垃圾行数

在这里插入图片描述

字段名字段类型字段信息描述
relidid数据库OID
schemanamename该表所在的模式名称
relnamename该表的名称
heap_blks_readbigint从该表中读取的磁盘块数量
heap_blks_hitbigint该表中的缓冲区命中数
idx_blks_readbigint从该表的所有索引中读取的磁盘块数
idx_blks_hitbigint该表上所有索引中的缓冲区命中数
toast_blks_readbigint从该表的TOAST表中读取的磁盘块数量(如果有的话)
toast_blks_hitbigint该表的TOAST表中的缓冲区命中次数(如果有的话)
tidx_blks_readbigint从该表的TOAST表索引中读取的磁盘块数量(如果有的话)
tidx_blks_hitbigint该表的TOAST表索引中的缓冲区命中数(如果有的话)

2.7. 查看索引级统计信息

在这里插入图片描述

字段名字段类型字段信息描述
relidoid索引表的OID
indexrelidoid该索引的OID
schemanamename此索引所在的模式的名称
relnamename此索引的表名
indexrelnamename该索引的名称
idx_scanbigint在该索引上启动的索引扫描次数
idx_tup_readbigint扫描该索引返回的索引条目数
idx_tup_fetchbigint使用该索引进行简单索引扫描获取的活动表行数

2.8. 表的IO级统计信息

如heap主存储的块读(区分未命中shared buffer和命中shared buffer的统计)

在这里插入图片描述

字段名字段类型字段信息描述
relidoid表的OID
schemanamename该表所在的模式名称
relnamename该表的名称
heap_blks_readbigint从该表中读取的磁盘块数量
heap_blks_hitbigint该表中的缓冲区命中数
idx_blks_readbigint从该表的所有索引中读取的磁盘块数
idx_blks_hitbigint该表上所有索引中的缓冲区命中数
toast_blks_readbigint从该表的TOAST表中读取的磁盘块数量(如果有的话)
toast_blks_hitbigint该表的TOAST表中的缓冲区命中次数(如果有的话)
tidx_blks_readbigint从该表的TOAST表索引中读取的磁盘块数量(如果有的话)
tidx_blks_hitbigint该表的TOAST表索引中的缓冲区命中数(如果有的话)

2.9. 索引的IO级统计信息

索引的块读(区分未命中shared buffer和命中shared buffer的统计)

在这里插入图片描述

字段名字段类型字段信息描述
relidoid索引表的OID
indexrelidoidOID of this index
schemanamename该索引的OID
relnamename此索引的表名
indexrelnamename该索引的名称
idx_blks_readbigint从该索引读取的磁盘块数目
idx_blks_hitbigint这个索引中的缓冲区命中数

2.10. 序列的IO级统计信息

序列的块读(区分未命中shared buffer和命中shared buffer的统计)

在这里插入图片描述

字段名字段类型字段信息描述
relidoid序列的OID
schemanamename此序列所在的模式名称
relnamename这个序列的名称
blks_readbigint从这个序列中读取的磁盘块的数目
blks_hitbigint这个序列中缓冲区命中的次数

2.11. , 函数的统计信息

调用次数, 总的时间开销.
必须要先打开track_functions参数.

在这里插入图片描述

字段名字段类型字段信息描述
funcidoid函数的OID
schemanamename此函数所在的模式名称
funcnamename此函数的名称
callsbigint这个函数被调用的次数
total timedouble precision在这个函数和它调用的所有其他函数中花费的总时间,以毫秒为单位
self_timedouble precision在这个函数本身中花费的总时间,不包括它调用的其他函数,以毫秒为单位

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

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

相关文章

ArrayList与顺序表的简单理解

前言----list 在集合框架中,List是一个接口,继承自Collection。Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示: Iterable也是一个接口,表示实现该接口的类是可以逐个元素进…

鸿蒙4.0开发笔记之ArkTS语法基础@Entry@Component自定义组件的使用(九)

文章目录 一、自定义组件概述1、什么是自定义组件2、自定义组件的优点 二、创建自定义组件1、自定义组件的结构2、自定义组件要点3、成员变量的创建4、参数传递规则 三、练习案例 一、自定义组件概述 1、什么是自定义组件 在ArkUI中,UI显示的内容均为组件&#xf…

毫米波雷达DOA角度计算-----MUSIC算法

MUSIC算法如下: txNum :发射天线 2个 ,rxNum:接收天线 4 个 。 ant : 为目标点的 天线 接收数据 , 为 8*1矩阵。 A ant;d 0.5;M 1; % # 快拍数ang_ax -90:90; % 角度坐标% 接收信号方向向量for k1:…

【Java学习笔记】73 - 正则表达式

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter27/src/com/yinhai/regexp 一、引入正则表达式 1.提取文章中所有的英文单词 2.提取文章中所有的数字 3.提取文章中所有的英文单词和数字 4.提取百度热榜标题 正则表达式是处理文本的利器…

C语言——输入两个正整数 m 和 n。求其最大公约数和最小公倍数。

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int m, n;int i;int x 1;int y 0;printf("请输入两个正整数m和n&#xff1a;\n");scanf("%d,%d", &m, &n);for (i 1; i < m && i < n; i) {if (m % i 0 …

Java程序连接 nacos集群

我们在bootstrap.yml文件里可以直接连一个nacos集群的. 架构如下 没错,我们程序直连的是通过Nginx的,利用nginx的反向代理来做到连接nacos集群. 我们先把nginx的配置贴上来 upstream cluster{server 127.0.0.1:8848;server 127.0.0.1:8849;server 127.0.0.1:8850; }server{l…

软著项目推荐 深度学习动物识别 - 卷积神经网络 机器视觉 图像识别

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

基于SSM的高校学生实习管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

软件设计开发规程文件

《软件设计开发规程文件》 目的&#xff1a;为需求设计、开发、实现解决方案。

全新付费进群系统源码 完整版教程

首先准备域名和服务器 安装环境&#xff1a;Nginx1.18 MySQL 5.6 php7.2 安装扩展sg11 伪静态thikphp 后台域名/admin账号admin密码123456 代理域名/daili账号admin密码123456 一、环境配置 二、建站上传源代码解压 上传数据库配置数据库信息 三、登入管理后台 后台域名/ad…

合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输出&#xff1a;[] …

Redis深入理解-主从架构下内核数据结构、主从同步以及主节点选举

Redis 主从挂载后的内核数据结构分析 主节点中&#xff0c;会通过 clusteNode 中的 slaves 来记录该主节点包含了哪些从节点&#xff0c;这个 slaves 是一个指向 *clusterNode[] 数组的数据结构从节点中&#xff0c;会通过 clusterNode 中的 slaveof 来记录该从节点属于哪个主…

Windows10系统卸载服务和删除服务

记录一下Windows10系统卸载服务和删除服务 最近在使用自己win电脑的时候 发现服务里存在很久之前就没有使用的应用&#xff0c;对应的文件夹也都已经删除了&#xff0c;但是在win服务里一直存在&#xff0c;不知道会不会影响性能&#xff0c;看着吧还是强迫自己删掉好一些&…

Spring Cloud 版本升级记:OpenFeignClient与Gateway的爱恨交织

Spring Cloud 版本升级记&#xff1a;OpenFeignClient与Gateway的爱恨交织 近日&#xff0c;在负责的项目中&#xff0c;我对 Spring Boot、Spring Cloud 以及 Spring Cloud Alibaba 进行了版本升级。原以为会一切顺利&#xff0c;没想到却遭遇了 Spring Cloud Gateway 无法正…

DockerCompose修改某个服务的配置(添加或编辑端口号映射)后如何重启单个服务使其生效

场景 docker-compose入门以及部署SpringBootVueRedisMysql(前后端分离项目)以若依前后端分离版为例&#xff1a; docker-compose入门以及部署SpringBootVueRedisMysql(前后端分离项目)以若依前后端分离版为例_docker-compose部署java mysql redis-CSDN博客 上面讲了docker c…

pycharm右键执行,出现Run ‘Python tests in xxx‘的问题

1.问题描述 用pytest框架写了一个python的模块&#xff0c;右键执行时发现&#xff0c;执行的模块显示有问题&#xff0c;如下图所示 2.解决问题 Python tests这表示&#xff0c;当前运行的代码文件进入了pytest模式&#xff0c;pytest模式不同于run模式&#xff0c;因为运行…

postgresql以及postgis安装

一、安装postgresql及postgis 1.下载postgresql https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 我选择的版本为“postgresql-14.8-2-windows-x64.exe”。 2.以管理员模式运行安装程序 安装路径建议不要C盘&#xff0c;可能会由于权限问题导致目录…

跨境无限,智能连接 浙江省跨境电商产业联盟AIGC专委会—AIGC大会

2023年11月23日至27日&#xff0c;第二届全球数字贸易博览会在杭州国际博览中心举办。本届数贸会以“数字贸易 商通全球”为主题&#xff0c;中国与来自63个国家和地区、68个国际组织和境外商协会的各界代表约1000人出席开幕式。浙江省跨境电商产业联盟AIGC专委会受邀出席此次大…

C#简化工作之实现网页爬虫获取数据

1、需求 想要获取网站上所有的气象信息&#xff0c;网站如下所示&#xff1a; 目前总共有67页&#xff0c;随便点开一个如下所示&#xff1a; 需要获取所有天气数据&#xff0c;如果靠一个个点开再一个个复制粘贴那么也不知道什么时候才能完成&#xff0c;这个时候就可以使用C#…

sed应用

一.sed 1.Sed概述 sed编辑器时一种流编辑器&#xff0c;流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据&#xff0c;这些命令要么从命令行中输入&#xff0c;要存储在一个命令文本文件中。 2.sed命令的格…