当前位置: 首页 > news >正文

postgresql \watch实用的使用方法

文章目录

  • 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 1Fri 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有关的情况,这里只抛砖引玉,希望能够举一反三

相关文章:

postgresql \watch实用的使用方法

文章目录 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指令类似,可以帮我们在指定间隔…...

Cocos2d 项目问题记录

环境搭建 正常运行 Android 端的 Cocos2d 项目,本机至少需要 Android SDK、NDK 环境、Android Studio 项目报错总结 CMake Error: CMake was unable to find a build program corresponding to "Ninja" 默认创建工程的 gradle.tools 版本为 3.1.0&…...

系统架构合理性的思考 | 京东云技术团队

最近牵头在梳理部门的系统架构合理性,开始工作之前,我首先想到的是如何定义架构合理性? 从研发的角度来看如果系统上下文清晰、应用架构设计简单、应用拆分合理应该称之为架构合理。 基于以上的定义可以从以下三个方面来梳理评估&#xff1…...

Amelia预订插件:WordPress企业级预约系统

并非所有WordPress预订插件都像他们所设计的那样。其中一些缺乏运行高效预约操作所需的功能,而其他一些则看起来陈旧过时。您不需要其中任何一个,但Amelia预订插件似乎希望确保所有用户都对功能和风格感到满意。 在这篇Amelia企业级预约系统插件评测中&…...

共享门店模式:线下门店的商家如何利用它增加客户

随着数字化时代的到来,商业模式正在不断创新与演变,而共享经济正成为引领这一变革的重要力量。在这个大背景下,共享门店模式作为共享经济的一种体现,正在逐渐走进人们的生活,并为商家和消费者带来了新的商机和体验。 共…...

实现矩阵地图与rviz地图重合

文章目录 一、rviz地图转换矩形地图(只能用于全局规划)二、在rviz上显示地图边界信息,可视化调整,实现重合(只能用于局部规划)一、rviz地图转换矩形地图(只能用于全局规划) 此方法矩形地图可能会与rviz地图不重合,通过改变偏移量x_offset,y_offset接近地图 可以将矩…...

设计模式十九:备忘录模式(Memento Pattern)

备忘录模式是一种行为型设计模式,它允许对象在不暴露其内部状态的情况下捕获和恢复其状态。该模式的主要目标是在不破坏封装性的前提下,实现对象状态的备份和恢复。备忘录模式常用于需要保存对象历史状态、撤销操作或者实现快照功能的情况。 备忘录模式…...

【题解】二叉搜索树与双向链表

二叉搜索树与双向链表 题目链接:二叉搜索树与双向链表 解题思路1:递归中序遍历 首先题目最后要求的是一个的递增的双向链表,而二叉搜索树也是一类非常有特色的树,它的根节点大于所有左侧的节点,同时又小于所有右侧的…...

【真实案例】解决后端接口调用偶尔超时问题

文章目录 背景分析代码分析二次日志分析排查Gateway服务解决解决办法1:添加重试机制解决办法2:优化网关内存分配解决办法3:调整OOM策略背景 项目从虚拟机迁移到k8s云原生平台(RainBond)后,发现偶尔会出现接口调用超时的问题。 统计了一下从上线到现在近一个月的调用失败…...

操作符详解(1)

1. 操作符分类: 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员 2. 算术操作符 - * / % 1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。 2. 对…...

<指针进阶>指针数组和数组指针傻傻分不清?

✨Blog:🥰不会敲代码的小张:)🥰 🉑推荐专栏:C语言🤪、Cpp😶‍🌫️、数据结构初阶💀 💽座右铭:“記住,每一天都是一個新的開始&#x1…...

无代码集成飞书连接更多应用

场景描述: 基于飞书开放平台能力,无代码集成飞书连接更多应用,打通数据孤岛。通过Aboter可轻松搭建业务自动化流程,实现多个应用之间的数据连接。 支持包括飞书事件监听和接口调用的能力: 事件监听: 用…...

三分钟解决AE缓存预览渲染错误、暂停、卡顿问题

一、清除RAM缓存(内存) 你应该做的第一件事是清除你的RAM。这将清除当前存储在内存中的所有临时缓存文件。要执行此操作,请导航到编辑>清除>所有内存。这将从头开始重置RAM缓存 二、清空磁盘缓存 您也可以尝试清空磁盘缓存。执行此操作…...

朴实无华的数据增强然后训练一下应用在电网异物检测领域,好像有自己的数据集就能发文了

RCNN-based foreign object detection for securing power transmission lines (RCNN4SPTL) Abstract 本文提出了一种新的深度学习网络——RCNN4SPTL (RCNN -based Foreign Object Detection for Securing Power Transmission lines),该网络适用于检测输电线路上的…...

【使用教程】在Ubuntu下运行CANopen通信PMM伺服电机使用教程(NimServoSDK_V2.0.0)

本教程将指导您在Ubuntu操作系统下使用NimServoSDK_V2.0.0来运行CANopen通信的PMM系列一体化伺服电机。我们将介绍必要的步骤和命令,以确保您能够成功地配置和控制PMM系列一体化伺服电机。 NimServoSDK_V2.0.0是一款用于PMM一体化伺服电机的软件开发工具包。它提供了…...

vue3+ts+vite项目页面初始化loading加载效果

简介 一分钟实现 vue-pure-admin 同款项目加载时的 loading 效果 一、先看效果 1.1 静态效果 1.2 动态效果 二、上代码 核心代码在body里面&#xff0c;代码中已标明。找到你项目的 index.html &#xff0c;复制粘贴进去即可 <!DOCTYPE html> <html lang"en…...

ElasticSearch 数据聚合、自动补全(自定义分词器)、数据同步

文章目录 数据聚合一、聚合的种类二、DSL实现聚合1、Bucket&#xff08;桶&#xff09;聚合2、Metrics&#xff08;度量&#xff09;聚合 三、RestAPI实现聚合 自动补全一、拼音分词器二、自定义分词器三、自动补全查询四、实现搜索款自动补全&#xff08;例酒店信息&#xff0…...

神经网络基础-神经网络补充概念-18-多个样本的向量化

概念 多个样本的向量化通常涉及将一组样本数据组织成矩阵形式&#xff0c;其中每一行代表一个样本&#xff0c;每一列代表样本的特征。这种向量化可以使你更有效地处理和操作多个样本&#xff0c;特别是在机器学习和数据分析中。 代码实现 import numpy as np# 多个样本的数…...

*看门狗1

//while部分是我们在项目中具体需要写的代码&#xff0c;这部分的程序可以用独立看门狗来监控 //如果我们知道这部分代码的执行时间&#xff0c;比如是500ms&#xff0c;那么我们可以设置独立看门狗的 //溢出时间是600ms&#xff0c;比500ms多一点&#xff0c;如果要被监控的程…...

nginx防盗链

防盗链介绍 通过二次访问&#xff0c;请求头中带有referer&#xff0c;的方式不允许访问静态资源。 我们只希望用户通过反向代理服务器才可以拿到我们的静态资源&#xff0c;不希望别的服务器通过二次请求拿到我们的静态资源。 盗链是指在自己的页面上展示一些并不在自己服务…...

27岁裸辞转网安:从传统行业到网安,我踩通了这条路

27 岁女生从传统行业裸辞转网络安全&#xff0c;3 个月拿到大厂 offer&#xff1a;这行真的没你想的那么难 后台经常收到私信&#xff0c;问我一个做了 4 年传统行业&#xff08;之前是线下品牌运营&#xff09;的女生&#xff0c;为什么突然 “跨界” 转做网络安全&#xff1…...

浏览器光标锁定技术:Pointer Lock API与全屏API实战指南

1. 项目概述&#xff1a;一个解决浏览器光标“越狱”问题的实用工具如果你是一名前端开发者&#xff0c;或者经常需要制作在线演示、录屏教程&#xff0c;甚至是在开发一个网页端的游戏&#xff0c;那你一定遇到过这个让人头疼的问题&#xff1a;鼠标光标在网页里“不老实”。当…...

别只会改设置!Chrome/Edge浏览器主页被劫持的三种隐藏原因与根治方法

浏览器主页劫持的深度攻防&#xff1a;从表象到根源的终极解决方案 每次打开浏览器&#xff0c;那个陌生的主页是否让你感到烦躁&#xff1f;大多数人会直奔浏览器设置试图修改&#xff0c;却发现根本无效。这背后隐藏着远比表面设置更复杂的机制——快捷方式参数注入、注册表钩…...

为什么给 Claude Code 加上 CLAUDE.md 后,它就像换了一个脑子?

我是张大鹏&#xff0c;有十多年 AI 人工智能项目的开发经验&#xff0c;带过不少项目。说实话&#xff0c;最难的不是写代码&#xff0c;是让 AI 真正理解你想要什么。最近给项目加了一份 CLAUDE.md&#xff0c;效果立竿见影——Claude Code 从"莽撞乱撞"变成了&quo…...

Timoni高级功能揭秘:类型验证、签名和OCI分发

Timoni高级功能揭秘&#xff1a;类型验证、签名和OCI分发 【免费下载链接】timoni Timoni is a package manager for Kubernetes, powered by CUE and inspired by Helm. 项目地址: https://gitcode.com/gh_mirrors/ti/timoni Timoni是一个基于CUE的Kubernetes包管理器&…...

AI研究代理基准测试工具autoresearch-adal:自动化对比AdaL与Claude Code

1. 项目概述与核心价值如果你和我一样&#xff0c;经常在多个AI研究工具之间切换&#xff0c;试图找出哪个模型在解决复杂的、需要多步推理的研究任务上更胜一筹&#xff0c;那么你肯定体会过那种繁琐和低效。手动设置不同的API环境、编写重复的测试脚本、整理散落在各处的输出…...

基于大语言模型的信息抽取实战:从提示工程到生产部署

1. 项目概述&#xff1a;当信息抽取遇上大语言模型最近在信息抽取这个老行当里&#xff0c;很多同行都在讨论一个开源项目&#xff1a;pkuserc/ChatGPT_for_IE。乍一看标题&#xff0c;你可能觉得这又是一个“用ChatGPT API做点事”的玩具项目&#xff0c;但如果你像我一样&…...

RedBox容器编排工具:在Docker与K8s间的轻量级生产实践

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫Jamailar/RedBox。乍一看这个名字&#xff0c;你可能会联想到一个红色的盒子&#xff0c;或者某种特定的工具。实际上&#xff0c;它确实是一个“盒子”&#xff0c;一个用于构建、管理和部署容器化应用的…...

从电视测试卡到EDA工具:电子设计自动化的演进与内核

1. 项目概述&#xff1a;从测试卡到EDA&#xff0c;一段技术演进的个人叙事前几天整理旧物&#xff0c;翻出一张泛黄的老照片&#xff0c;是我小时候和堂姐蹲在黑白电视机前的合影。背景里&#xff0c;电视屏幕上不是动画片&#xff0c;而是那个著名的BBC测试卡图案——一个穿着…...

诛仙手游多开最多几开?用什么云手机比较好?

很多喜欢玩诛仙手游的朋友们都喜欢多开&#xff0c;但是今天小编告诉你们多开也不能开太多哦&#xff0c;要选择合适的云手机多开才行&#xff0c;不然同一个ip多开很容易封号&#xff0c;今天小宝就来给大家分析诛仙多开几个比较合适&#xff0c;以及用什么云手机多开不容易封…...