PostgreSQL/pgsql监控--慢查询插件pg_stat_statements

​本文转载自公众号【新运维新数据】

文章来源:PostgreSQL监控(一)---pg_stat_statements - 墨天轮
 

PS:为方便新人阅读,本人对部分内容做了修改,如【扩展】改为【扩展插件】,因为在日常习惯上,【扩展】是动词,但此文中其实它是名词。

PS:更多内容请阅读“postgresql公司”的英文手册以及“PgSQL中文社区”翻译的中文手册对应章节:

postgresql公司-PgSQL14-英文手册pg_stat_statements对应章节https://www.postgresql.org/docs/14/pgstatstatements.htmlpostgresql公司-PgSQL15-英文手册pg_stat_statements对应章节https://www.postgresql.org/docs/15/pgstatstatements.html

postgresql中文社区-PgSQL14-中文手册pg_stat_statements对应章节icon-default.png?t=M85Bhttp://www.postgres.cn/docs/14/pgstatstatements.html

文章开始:

#1 pg_stat_statements

在日常运维工作中,我们会经常需要定位一些SQL引起的性能问题,包括分析执行SQL的统计信息、定位抓取慢SQL语句等等。

本期就为大家介绍一款监控SQL语句的扩展插件pg_stat_statements。

pg_stat_statements模块提供了一个方法用来追踪服务器所执行的所有SQL语句执行统计信息,也可以记录数据库的资源开销,得益于该模块的作用,使得PostgreSQL在一些性能分析的问题上也获得了横向的扩展,直观且快捷地展现出SQL语句对于数据库的性能影响。

#2 在Linux中安装配置pg_stat_statements扩展插件

下面就介绍一下如何安装并使用这个扩展插件,如果在安装数据库服务的时候已经编译好了,那就可以在数据库内直接创建扩展即可。

当然也可以对其进行单独的编译安装,找到源码目录,进入到pg_stat_statements目录下。

$ cd src/contrib/pg_stat_statements/
$ make && make install

完成了扩展的编译安装,我们还需要修改配置文件中的相应参数' shared_preload_libraries ',这个变量指定一个或者多个要在服务器启动时预载入的共享库,使用pg_stat_statements扩展插件需要将其加入共享库中(同时使用多个扩展插件时,使用英文逗号分隔)

$ vi postgresql.conf
shared_preload_libraries='pg_stat_statements'


可以根据自己的需要,配置以下几个常用的参数

pg_stat_statements.max = 10000      #保留多少条统计信息,默认值5000
pg_stat_statements.track = all        #记录所有sql
pg_stat_statements.track_utility = off   #是否跟踪非DML语句
pg_stat_statements.save = on    #重启之后是否保留统计信息

配置完成后需要重启数据库服务,然后登录数据库,创建扩展

postgres=# create extension pg_stat_statements;

至此,扩展插件安装完成。

可以在数据库的public模式中看到,我们获得了一个新的视图【pg_stat_statements】,SQL执行的统计信息都可以从该视图获取信息,文末附录了该视图各字段的解释

#3 常用统计SQL

以下列出了几个常用的统计SQL供参考

--最耗时的TOP 5 SQL
select dbid, query from pg_stat_statements 
 order by total_time desc limit 5;
--最消耗IO的TOP 5 SQL
select dbid, query from pg_stat_statements 
 order by  (blk_read_time+blk_write_time) desc limit 5;
--响应时间抖动最严重的TOP 5 SQL
select dbid, query from pg_stat_statements 
 order by  stddev_time desc limit 5;


快速、直观的SQL统计信息,能够帮助运维工程师在日常维护工作中更迅速地定位一些因为执行SQL引起的数据库性能问题,pg_stat_statements插件无疑提供了一个极为高效的方法和途径!

#4附录

pg_stat_statements视图中各字段释义(注:新版本的PgSQL提供的字段会有调整,详见上面链接里相应版本的中文手册或英文手册)

<think>好的,我现在需要帮助用户理解他们提供的yum list available的输出中关于PostgreSQL的各个软件包。首先,用户可能是在查看他们系统上可用的PostgreSQL相关包,可能是想安装PostgreSQL或者相关的扩展、驱动等。 首先,我要确定用户的使用场景。用户执行的是yum list available并过滤了postgresql,说明他们可能在寻找可安装的PostgreSQL相关软件包。这可能是因为他们打算安装PostgreSQL服务器,或者需要某些特定的扩展、文件等。用户可能对各个包的作用不太清楚,需要解释每个包的功能,以帮助他们决定安装哪些。 接下来,我需要解析每一个列出的包,并简要说明它们的作用。例如,postgresql.x86_64是主程序,postgresql-server.x86_64是服务端组件,而像postgresql-devel可能包含开发所需的头文件和。需要确保每个包的解释准确,并且用用户容易理解的语言描述。 同时,用户可能对版本号、仓来源(如ks10-adv-updates和ks10-adv-os)有疑问。需要解释版本号的结构,例如10.5-23.p04.ky10中的主版本是10.5,后面的可能是补丁或构建版本。仓来源可能代表不同的更新通道,稳定版和测试版的区别。 还要考虑用户可能的后续操作,比如如何安装这些包,是否需要启用特定仓,或者是否有依赖问题。例如,安装postgresql-server后需要初始化数据库,或者某些包如postgresql-contrib包含额外的扩展功能,用户是否需要这些功能。 另外,用户提供的列表中有一些与其他软件集成的包,比如freeradius-postgresql、libreoffice-postgresql,这些可能需要解释它们的作用,以便用户了解是否与他们的使用场景相关。 需要注意用户可能的错误理解,比如以为只需要安装postgresql就能运行服务器,但实际上还需要postgresql-server。或者在开发时需要安装devel包才能编译某些应用。 最后,总结建议用户根据需求安装核心包,并说明常用命令,如安装服务端和初始化步骤。同时提醒版本较旧,可能存在更新的版本,是否需要考虑升级或添加其他仓。 总结来说,我需要将每个包的作用清晰列出,解释版本和仓信息,并给出安装建议,帮助用户做出正确的选择。</think>以下是对该yum仓PostgreSQL相关软件包的详细说明及安装建议: **一、核心组件** 1. `postgresql.x86_64` (10.5-23.p04.ky10) PostgreSQL客户端程序和基础,包含`psql`命令行工具,用于连接和管理数据库 2. `postgresql-server.x86_64` (10.5-23.p04.ky10) 数据库服务端主程序,需配合客户端使用。安装后需执行: ```bash sudo postgresql-setup initdb sudo systemctl start postgresql ``` 3. `postgresql-libs.x86_64` (10.5-23.p04.ky10) 客户端连接文件,多数应用依赖此基础 **二、扩展组件** 4. `postgresql-contrib.x86_64` 官方扩展模块集合,包含常用插件如`pg_stat_statements` 5. 过程语言支持: - `postgresql-plperl.x86_64` Perl扩展 - `postgresql-plpython3.x86_64` Python3扩展 - `postgresql-pltcl.x86_64` Tcl扩展 **三、开发相关** 6. `postgresql-devel.x86_64` 开发头文件和静态,用于编译PostgreSQL扩展 7. `postgresql-static.x86_64` 静态链接版本 **四、驱动集成** 8. `postgresql-jdbc.noarch` (42.4.1) JDBC 4.2驱动,支持Java应用连接,对应JDK 1.8+ 9. `qt5-qtbase-postgresql.x86_64` Qt5框架的PostgreSQL数据库驱动 **五、服务集成** 10. `freeradius-postgresql.x86_64` RADIUS认证服务的PostgreSQL支持模块 11. `proftpd-postgresql.x86_64` ProFTPD的PostgreSQL认证模块 **版本说明**: 当前仓提供的是PostgreSQL 10.5(2018年发布),版本较旧。建议检查是否需通过其他仓获取新版本(如PostgreSQL官方仓通常提供最新版) **安装建议**: ```bash # 基础服务端安装 sudo yum install postgresql-server postgresql-contrib # 开发环境安装 sudo yum install postgresql-devel # Java项目需安装JDBC驱动 sudo yum install postgresql-jdbc ``` **注意事项**: 1. 安装服务端后必须初始化数据库: ```bash sudo postgresql-setup initdb sudo systemctl enable postgresql ``` 2. 默认数据目录位于`/var/lib/pgsql` 3. 配置文件路径:`/var/lib/pgsql/data/postgresql.conf`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值