PostgreSQL的扩展(extensions)-常用的扩展之pg_stat_statements

PostgreSQL的扩展(extensions)-常用的扩展之pg_stat_statements

基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777

pg_stat_statements 是 PostgreSQL 中的一个非常有用的扩展,它用于跟踪和统计数据库中执行的所有SQL语句的性能。这个扩展可以帮助你识别最频繁运行的查询、哪些查询消耗的时间最长,以及系统的整体工作量,从而对性能瓶颈进行诊断和优化。

主要特性

  • 查询统计:收集关于执行的SQL语句的统计信息,包括调用次数、总执行时间、行读取数、行写入数等。
  • 性能分析:帮助识别最耗时的查询,以便进行查询优化。
  • 系统监控:了解系统运行情况,哪些查询对系统资源消耗最大。

安装和启用

要使用 pg_stat_statements 扩展,你首先需要在 PostgreSQL 安装它,然后在数据库中启用它。

  1. 安装扩展:这一步通常在 PostgreSQL 的安装过程中就已经完成。如果未完成,你可能需要根据操作系统和 PostgreSQL 的安装方法进行手动安装。

  2. 启用扩展:在你的目标数据库中运行以下SQL命令来启用 pg_stat_statements 扩展。

    CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
    

–创建

postgres=# SELECT * FROM pg_extension;oid  | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition 
-------+---------+----------+--------------+----------------+------------+-----------+--------------14270 | plpgsql |       10 |           11 | f              | 1.0        |           | 
(1 row)postgres=# CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE EXTENSION
postgres=# SELECT * FROM pg_extension;oid  |      extname       | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition 
-------+--------------------+----------+--------------+----------------+------------+-----------+--------------14270 | plpgsql            |       10 |           11 | f              | 1.0        |           | 16423 | pg_stat_statements |       10 |         2200 | t              | 1.10       |           | 
(2 rows)

配置

你可能需要在 postgresql.conf 配置文件中进行一些配置来使用 pg_stat_statements

  • shared_preload_libraries:需要将 pg_stat_statements 添加到这个参数中,以便在 PostgreSQL 启动时加载该扩展。修改配置后,你需要重启 PostgreSQL 服务。

    shared_preload_libraries = 'pg_stat_statements'
    
postgres=# select * from pg_settings  where name='shared_preload_libraries' and setting ='pg_stat_statements'; name | setting | unit | category | short_desc | extra_desc | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | sourcefile | sourceline | pending_restart 
------+---------+------+----------+------------+------------+---------+---------+--------+---------+---------+----------+----------+-----------+------------+------------+-----------------
(0 rows)postgres=# alter system set shared_preload_libraries=pg_stat_statements;
ALTER SYSTEM
postgres=# \q
[pg16@test ~]$ pg_ctl restart
waiting for server to shut down....2024-04-24 21:22:28.679 PDT [14806] DEBUG:  logger shutting downdone
server stopped
waiting for server to start....2024-04-24 21:22:28.728 PDT [15113] DEBUG:  registering background worker "logical replication launcher"
2024-04-24 21:22:28.729 PDT [15113] DEBUG:  loaded library "pg_stat_statements"
2024-04-24 21:22:28.729 PDT [15113] DEBUG:  mmap(153092096) with MAP_HUGETLB failed, huge pages disabled: Cannot allocate memory
2024-04-24 21:22:28.750 PDT [15113] LOG:  redirecting log output to logging collector process
2024-04-24 21:22:28.750 PDT [15113] HINT:  Future log output will appear in directory "log".done
server started
[pg16@test ~]$ psql -p 5777
psql (16.2)
Type "help" for help.postgres=# select * from pg_settings  where name='shared_preload_libraries' and setting ='pg_stat_statements';name           |      setting       | unit |                        category                        |                   short_desc                   | extra_desc |  context   | 
vartype |       source       | min_val | max_val | enumvals | boot_val |     reset_val      |              sourcefile              | sourceline | pending_restart 
--------------------------+--------------------+------+--------------------------------------------------------+------------------------------------------------+------------+------------+-
--------+--------------------+---------+---------+----------+----------+--------------------+--------------------------------------+------------+-----------------shared_preload_libraries | pg_stat_statements |      | Client Connection Defaults / Shared Library Preloading | Lists shared libraries to preload into server. |            | postmaster | 
string  | configuration file |         |         |          |          | pg_stat_statements | /home/pg16/data/postgresql.auto.conf |          3 | f
(1 row)postgres=# 
  • track 配置:你可以通过调整 pg_stat_statements.track 参数来控制哪些SQL被统计(例如,仅统计顶级语句或所有语句)。

使用

启用和配置 pg_stat_statements 后,你可以开始查询收集到的数据。

postgres=# \d pg_stat_statementsView "public.pg_stat_statements"Column         |       Type       | Collation | Nullable | Default 
------------------------+------------------+-----------+----------+---------userid                 | oid              |           |          | dbid                   | oid              |           |          | toplevel               | boolean          |           |          | queryid                | bigint           |           |          | query                  | text             |           |          | plans                  | bigint           |           |          | total_plan_time        | double precision |           |          | min_plan_time          | double precision |           |          | max_plan_time          | double precision |           |          | mean_plan_time         | double precision |           |          | stddev_plan_time       | double precision |           |          | calls                  | bigint           |           |          | total_exec_time        | double precision |           |          | min_exec_time          | double precision |           |          | max_exec_time          | double precision |           |          | mean_exec_time         | double precision |           |          | stddev_exec_time       | double precision |           |          | rows                   | bigint           |           |          | shared_blks_hit        | bigint           |           |          | shared_blks_read       | bigint           |           |          | shared_blks_dirtied    | bigint           |           |          | shared_blks_written    | bigint           |           |          | local_blks_hit         | bigint           |           |          | local_blks_read        | bigint           |           |          | local_blks_dirtied     | bigint           |           |          | local_blks_written     | bigint           |           |          | temp_blks_read         | bigint           |           |          | temp_blks_written      | bigint           |           |          | blk_read_time          | double precision |           |          | blk_write_time         | double precision |           |          | temp_blk_read_time     | double precision |           |          | temp_blk_write_time    | double precision |           |          | wal_records            | bigint           |           |          | wal_fpi                | bigint           |           |          | wal_bytes              | numeric          |           |          | jit_functions          | bigint           |           |          | jit_generation_time    | double precision |           |          | jit_inlining_count     | bigint           |           |          | jit_inlining_time      | double precision |           |          | jit_optimization_count | bigint           |           |          | jit_optimization_time  | double precision |           |          | jit_emission_count     | bigint           |           |          | jit_emission_time      | double precision |           |          | postgres=# SELECT query, calls, total_exec_time, rows, 100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent FROM pg_stat_statements ORDER BY total_exec_time DESC;

这个查询将返回数据库中消耗时间最长的查询,包括它们被调用的次数、总执行时间、返回的行数和缓存命中率。

注意

  • pg_stat_statements 保存的统计信息是跨服务器重启累积的,但你可以通过调用 pg_stat_statements_reset() 函数来清除统计数据。
  • 在某些情况下,过多的细节信息可能被参数化,为了获得更具体的查询信息,你可能需要调整 pg_stat_statements.max 参数和其他相关配置。

pg_stat_statements 是 PostgreSQL 数据库性能监控和优化的重要工具之一,正确使用和解读它的数据可以大大帮助提高数据库的运行效率。

谨记:心存敬畏,行有所止。

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

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

相关文章

java解析PDF、WORD获取中的表格以及文本内容

近期因工作需要需要解析PDF,需要把PDF中的文本和表格分离,最终要实现的目标是PDF中的文本内容放一块,表格内容放一块,以list的形式存储。解析PDF的技术有很多,经过多次尝试发现使用AdobeAcrobat可以实现表格和文本分离…

TensorFlow轻松入门(一)(更新中)

常见模块 tf. :包含了张量定义,变换等常用函数和类;tf.data:输入数据处理模块,提供了像tf.data.Dataset等类用于封装输入数据,指定批量大小等;tf.image:图像处理模块,提…

el-form 表单设置某个参数非必填验证

html <el-form ref"form" :rules"rules"><el-form-item prop"tiktokEmail" label"邮箱" ><el-input v-model"form.tiktokEmail" placeholder"邮箱" ></el-input></el-form-item&…

mybatis中foreach使用

一、foreach 属性使用 <foreach collection"list" index"index" item"mchntCd" open"(" close")" separator",">#{mchntCd} </foreach>item&#xff1a; 集合中元素迭代时的别名&#xff0c;该参数为…

项目实战:Qt获取CTP量化交易接口测试数据工具 v1.0.0(获取深度行情数据、订阅取消订阅)

若该文为原创文章&#xff0c;转载请注明出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/137937666 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

VSCODE自定义代码片段简述与基础使用

目录 一、 简述二 、 基础使用说明2.1 新建一个代码块工作区间2.2 语法 三、 示例四、 参考链接 一、 简述 VSCode的自定义代码片段功能允许开发者根据自己的需求定义和使用自己的代码片段&#xff0c;从而提高编码效率。 优点: 提高效率&#xff1a; 自定义代码片段能够减少…

springboot+Vue实现分页

文章目录 一、后端二、前端 今天开发的有一个场景就是需要从远程ssh服务器上加载一个文件展示到前端&#xff0c;但是一次性拉过来有几万条数据&#xff0c;一下载加载整个文件会导致前端非常非常的卡&#xff0c;于是要使用分页解决&#xff0c;我之前看过的有mybatis的分页查…

乐鑫的ESP32-S3芯片的LE能实现beacon功能吗?

最近帮一个客户做ESP32定位器方案&#xff0c;客户提出这个疑问&#xff0c;乐鑫的ESP32-S3芯片的LE能实现beacon功能吗&#xff1f;针对这个问题&#xff0c;启明云端工程师小启给出这样的回复。 回答是可以的&#xff0c;大家可以看idf的例程。 ESP-IDF iBeacon demo From …

时间,空间复杂度讲解——夯实根基

前言&#xff1a;本节内容属于数据结构的入门知识——算法的时间复杂度和空间复杂度。 时间复杂度和空间复杂度的知识点很少&#xff0c; 也很简单。 本节的主要篇幅会放在使用具体例题来分析时间复杂度和空间复杂度。本节内容适合刚刚接触数据结构或者基础有些薄弱的友友们哦。…

C/C++开发,opencv-ml库学习,随机森林(RTrees)应用

目录 一、随机森林算法 1.1 算法简介 1.2 OpenCV-随机森林&#xff08;Random Forest&#xff09; 二、cv::ml::RTrees应用 2.2 RTrees应用 2.2 程序编译 2.3 main.cpp全代码 一、随机森林算法 1.1 算法简介 随机森林算法是一种集成学习&#xff08;Ensemble Learning&a…

软件著作权合作开发协议撰写指南

由两个以上的自然人、法人或者非法人组织合作开发的软件,其著作权的归属由合作开发者签订书面合同约定。无书面合同或者合同未作明确约定,合作开发的软件可以分割使用的,开发者对各自开发的部分可以单独享有著作权;但是,行使著作权时,不得扩展到合作开发的软件整体的著作…

大语言模型在研究领域的应用——推荐系统中的大语言模型

推荐系统中的大语言模型 大语言模型作为推荐模型基于特定提示的方法基于指令微调的方法大语言模型增强的推荐模型数据输入增强语义表示增强偏好表示增强大语言模型作为推荐模拟器总结应用建议现存问题和未来方向推荐系统的核心在于捕捉并理解用户的潜在偏好,进而为用户推送合适…

Python 语音识别系列-实战学习之初识语音识别

Python 语音识别系列-实战学习之初识语音识别 前言1.语音识别简介2.语音识别的工作原理3.语音识别的基本模块4.语音识别的发展历史5.语音识别的应用场景6.语音识别的Python案例7.总结 前言 在本篇博客中&#xff0c;将介绍语音识别的基础知识&#xff0c;包括其定义、工作原理…

百度沈抖:智能,生成无限可能

4月16日&#xff0c;Create 2024百度AI开发者大会在深圳举行。会上&#xff0c;百度集团执行副总裁、百度智能云事业群总裁沈抖正式发布新一代智能计算操作系统——百度智能云万源。它能管理万卡规模的集群&#xff0c;极致地发挥GPU、CPU的性能&#xff1b;它有强大的大模型作…

本地环境运行Llama 3大型模型:可行性与实践指南

简介&#xff1a; Llama 是由 Meta&#xff08;前身为 Facebook&#xff09;的人工智能研究团队开发并开源的大型语言模型&#xff08;LLM&#xff09;&#xff0c;它对商业用途开放&#xff0c;对整个人工智能领域产生了深远的影响。继之前发布的、支持4096个上下文的Llama 2…

19. TypeScript 类型运算符

TypeScript作为JavaScript的超集&#xff0c;不仅提供了静态类型检查&#xff0c;还引入了多种类型运算符&#xff0c;使得类型定义更加灵活和强大。这些运算符可以帮助我们构建更加精确和灵活的类型定义。本文将详细介绍这些类型运算符的用法和应用场景。 keyof 运算符 keyo…

Python 数据可视化 boxplot

Python 数据可视化 boxplot import pandas as pd import matplotlib.pyplot as plt import numpy as np import seaborn as sns# 读取 TSV 文件 df pd.read_csv(result.tsv, sep\t)normal_df df[df["sample_name"].str.contains("normal")] tumor_df df…

重磅!!!监控分布式NVIDIA-GPU状态

简介&#xff1a;Uptime Kuma是一个易于使用的自托管监控工具&#xff0c;它的界面干净简洁&#xff0c;部署和使用都非常方便&#xff0c;用来监控GPU是否在占用&#xff0c;非常美观。 历史攻略&#xff1a; docker应用&#xff1a;搭建uptime-kuma监控站点 win下持续观察…

新能源汽车电池盒尺寸检测

SNK施努卡电池盒错漏装和尺寸检测 随着环境污染和能源短缺问题日益突出&#xff0c;新能源汽车作为一种环保、可持续的交通工具得到了广泛关注和推广。其中&#xff0c;电池是新能源汽车的核心部件之一&#xff0c;其性能和质量直接影响到整车的续航能力和安全性。而电池盒作为…

Unity Meta Quest MR 开发(七):使用 Stencil Test 模板测试制作可以在虚拟与现实之间穿梭的 MR 传送门

文章目录 &#x1f4d5;教程说明&#x1f4d5;Stencil Test 模板测试&#x1f4d5;Stencil Shader&#x1f4d5;使用 Unity URP 渲染管线设置模板测试⭐Render Pipeline Asset 与 Universal Renderer Data⭐删除场景中的天空盒⭐设置虚拟世界的层级 Layer⭐设置模板测试 &#…