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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值