postgresql \watch实用的使用方法

news/2024/7/9 22:33:14 标签: postgresql, 数据库

文章目录

  • 1.介绍
  • 2.语法
  • 3.实用的使用方法
    • 3.1 慢sql监控
    • 3.2 长wait事件
    • 3.3 日志输出量
    • 3.3结合pg_stat_database使用
    • 3.4 结合pg_stat_bgwriter使用
    • 3.5 其他

1.介绍

\watch Postgres 9.3 版带来的一个有用的命令,与linux watch指令类似,可以帮我们在指定间隔时间内持续观察db活动,如单位时间内的事务数,commit、rollback量、刷脏量、读写量、xlog写入量、长会话、wait等

2.语法

\watch [ seconds ]

\watch 不需要在每次执行查询时获取新连接,从而节省了一些执行开销。 此外,如果查询失败,\watch会自动停止。
注意, \watch 只能在要运行的查询末尾使用。

postgres=# postgres=# \watch 2 "SELECT 1"
ERROR:  syntax error at or near "postgres"
LINE 1: postgres=# 
        ^
\watch: extra argument ""SELECT 1"" ignored

正确的使用方法

postgres=# select 1; \watch 1;                                                                                                                                                                                       ?column? 
----------
        1       

如果未指定查询语句,它将使用缓冲区中最后的查询语句。

postgres=\watch 1;
Fri 18 Aug 2023 11:34:18 AM WIB (every 1s)

 ?column? 
----------
        1

3.实用的使用方法

3.1 慢sql监控

postgres=select query,wait_event_type,wait_event from pg_stat_activity 
where wait_event is not null and now()-state_change>interval '5 second';
ostgres=#\watch 1

3.2 长wait事件

postgres=select query,wait_event_type,wait_event from pg_stat_activity where state='active' and wait_event is not null and now()-state_change>interval '5 second';
ostgres=#\watch

3.3 日志输出量

postgres=with wal_cte as (select pg_current_wal_lsn() last_wal_lsn),                                                                                                                                                  sleep_cte as (select pg_sleep(1))                                                                                                                                                                                     SELECT pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(),last_wal_lsn)) from wal_cte,sleep_cte;
ostgres=#\watch 0.000001

3.3结合pg_stat_database使用

可以结合pg_stat_database 了解block命中情况、insert、update、update情况,以及temp写入情况等等
先看一下,pg_stat_database有哪些字段

commondb=# \d pg_stat_database;
                     View "pg_catalog.pg_stat_database"
     Column     |           Type           | Collation | Nullable | Default 
----------------+--------------------------+-----------+----------+---------
 datid          | oid                      |           |          | 
 datname        | name                     |           |          | 
 numbackends    | integer                  |           |          | 
 xact_commit    | bigint                   |           |          | 
 xact_rollback  | bigint                   |           |          | 
 blks_read      | bigint                   |           |          | 
 blks_hit       | bigint                   |           |          | 
 tup_returned   | bigint                   |           |          | 
 tup_fetched    | bigint                   |           |          | 
 tup_inserted   | bigint                   |           |          | 
 tup_updated    | bigint                   |           |          | 
 tup_deleted    | bigint                   |           |          | 
 conflicts      | bigint                   |           |          | 
 temp_files     | bigint                   |           |          | 
 temp_bytes     | bigint                   |           |          | 
 deadlocks      | bigint                   |           |          | 
 blk_read_time  | double precision         |           |          | 
 blk_write_time | double precision         |           |          | 
 stats_reset    | timestamp with time zone |           |          | 
postgres=\c commondb
commondb=select pg_stat_reset();
 pg_stat_reset 
---------------
 (1 row)
commondb=select datid,datname,pg_size_pretty(blks_read*8192) blks_read,pg_size_pretty(blks_hit*8192) blks_hit,round(blks_hit/(blks_read+blks_hit),2) hit_ratio from pg_stat_database where datname='commondb';
 datid  | datname  | blks_read | blks_hit | hit_ratio 
--------+----------+-----------+----------+-----------
 525340 | commondb | 0 bytes   | 1259 MB  |      1.00

3.4 结合pg_stat_bgwriter使用

可以结合pg_stat_database分别了解checkpoint、bgwriter、backend三个进程完成的刷脏量

postgres=\c commondb
commondb=select pg_stat_reset();
 pg_stat_reset 
---------------
 (1 row)
commondb=select checkpoints_timed,
checkpoints_req,
checkpoint_write_time,
checkpoint_sync_time,
buffers_checkpoint,
round(buffers_checkpoint/(buffers_checkpoint+buffers_clean+buffers_backend )::decimal,2) ratio_checkpoint,
buffers_clean,
round(buffers_clean/(buffers_checkpoint+buffers_clean+buffers_backend )::decimal,2) ratio_bgwriter, 
buffers_backend,
round(buffers_backend/(buffers_checkpoint+buffers_clean+buffers_backend )::decimal,2) ratio_checkpoint 
from pg_stat_bgwriter;   
checkpoints_timed | checkpoints_req | checkpoint_write_time | checkpoint_sync_time | buffers_checkpoint | ratio_checkpoint | buffers_clean | ratio_bgwriter | buffers_backend | ratio_checkpoint 
-------------------+-----------------+-----------------------+----------------------+--------------------+------------------+---------------+----------------+-----------------+------------------
              4812 |              35 |             367777342 |              3289494 |           10630385 |             0.32 |      10245413 |           0.30 |        12763415 |             0.38
commondb=# \watch 1
                                                                            Fri 18 Aug 2023 02:36:19 PM WIB (every 1s)

 checkpoints_timed | checkpoints_req | checkpoint_write_time | checkpoint_sync_time | buffers_checkpoint | ratio_checkpoint | buffers_clean | ratio_bgwriter | buffers_backend | ratio_checkpoint 
-------------------+-----------------+-----------------------+----------------------+--------------------+------------------+---------------+----------------+-----------------+------------------
              4812 |              35 |             367777342 |              3289494 |           10630423 |             0.32 |      10245413 |           0.30 |        12763418 |             0.38
(1 row)

                                                                            Fri 18 Aug 2023 02:36:20 PM WIB (every 1s)

 checkpoints_timed | checkpoints_req | checkpoint_write_time | checkpoint_sync_time | buffers_checkpoint | ratio_checkpoint | buffers_clean | ratio_bgwriter | buffers_backend | ratio_checkpoint 
-------------------+-----------------+-----------------------+----------------------+--------------------+------------------+---------------+----------------+-----------------+------------------
              4812 |              35 |             367777342 |              3289494 |           10630426 |             0.32 |      10245413 |           0.30 |        12763418 |             0.38
(1 row)

3.5 其他

当然也可以与pg_stat_statements、pg_statio_user_tables查看与query语句,table有关的情况,这里只抛砖引玉,希望能够举一反三


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

相关文章

springboot引入druid解析sql

一、前言 在开发中&#xff0c;有时我们可能会需要获取SQL中的表名&#xff0c;那么因为不同的数据源类型SQL会存在部分差异&#xff0c;那么我们就可以使用alibaba 的druid包实现不同的数据源类型的sql解析。 二、引入相关maven依赖 <dependency><groupId>com.a…

08-信息收集-架构、搭建、WAF等

信息收集-架构、搭建、WAF等 信息收集-架构、搭建、WAF等一、前言说明二、CMS识别技术三、源码获取技术四、架构信息获取技术五、站点搭建分析1、搭建习惯-目录型站点2、搭建习惯-端口类站点3、搭建习惯-子域名站点4、搭建习惯-类似域名站点5、搭建习惯-旁注&#xff0c;c段站点…

Python功能制作之3D方块

介绍 用python写一个黑窗口&#xff0c;窗口里面有一个白色的3D方块&#xff0c;左键按下后移动可以旋转以各个视角来看方块。 当然有需要的话&#xff0c;可以自己在代码中去更改颜色&#xff0c;直接通过RBG的参数进行更改即可。 做了两个函数&#xff1a;init[初始化]和d…

【云原生,k8s】Helm应用包管理器介绍

目录 一、为什么需要Helm&#xff1f; &#xff08;一&#xff09;Helm介绍 &#xff08;二&#xff09;Helm有3个重要概念&#xff1a; &#xff08;三&#xff09;Helm特点 二、Helm V3变化 &#xff08;一&#xff09;架构变化 &#xff08;二&#xff09;自动创建名…

windows上的docker自动化部署到服务器脚本

1、mvn install后&#xff0c;双击这个bat&#xff0c;实现docker build后上传到124服务器&#xff0c;并且重启124服务器 **echo offsetlocal:: 定义镜像名称和版本变量 set IMAGE_NAMEweb set IMAGE_VERSION1.3.1:: 清理本地文件 echo Cleaning up... del service-%IMAGE_N…

单发多框检测(SSD)【动手学深度学习】

单发多框检测模型主要由一个基础网络块和若干多尺度特征块串联而成。基本网络用于从输入图像中提取特征,可以使用深度卷积神经网络,原论文中选用了在分类层之前阶段的VGG,现在也常用ResNet替代。 我们可以设计基础网络,使它输出的高和宽较大,这样基于该特征图生成的锚框数…

记一次mysql8 在linux上安装全过程

参照MYSQL官网官方文档安装 1、mysql官网 mysql官网 2、直接进入文档页 找到安装文档 3、找到自己系统对应的安装文档&#xff0c;选合适的安装方式&#xff0c;我这里使用的是YUM方式 a、开始安装之前需要替换yum仓库 具体步骤如下 b、将下载的文件上传至自己的服务器 如下…

关于路由器和DNS解析的一些新理解

其实我本人对于交换机和路由器这些网络硬件是比较感兴趣的&#xff0c;也在一点一点的学习相关知识&#xff0c;每次解决一个问题&#xff0c;就让我对一些事情有新的思考。。 今天前台同事&#xff0c;的机器突然上不了网&#xff0c;&#xff0c;和领导一起去看了一波&#…