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

postgresql:记录表膨胀引起的io问题的处理

文章目录

  • 1. io异常
  • 2.查看profile报告
    • 2.1 生成事发时间段的pgprofile
    • 2.2 查看报告
  • 3.检查table是否膨胀
  • 4.执行vacuum full
  • 5.总结

1. io异常

iostat -x 1 20
Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
loop0            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
loop1            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
loop2            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
sdb            526.00   62.00   8896.00    976.00     2.00     0.00   0.38   0.00    5.18    5.68   3.04    16.91    15.74   1.70 100.00
sda              0.00    3.00      0.00     16.00     0.00     1.00   0.00  25.00    0.00    0.00   0.00     0.00     5.33   0.00   0.00

2.查看profile报告

2.1 生成事发时间段的pgprofile

(参阅:使用 pg_profile 在 Postgres 中生成性能报告

2.2 查看报告

这里主要查看产生physical read最多的sql:
a8da96b7d2的read占用了66.78%,且命中率仅12.33%
在这里插入图片描述
点击a8da96b7d2可获得sql内容:

select l.factoryno, l.buildno, l.opgroupno, l.arbpl, a.prodbatch as podr_no, a.zzmdmark as artic_no, a.mold_no as mold_no, l.deptno, a.stepname, a.part, a.componentdescen, a."action", a.sizeno as sizeno, substring(max(a.createon),$5,$6) as in_time, max(a.createon) as createon, coalesce(b.targetqty,$7) as t_qty, coalesce(sum(a.primaryquantity),$8) as a_qty from (select a.*, mda.mold_no from pp_outboundshoeprod a inner join (select distinct a.matnr, a.zzgendr, a.mold_no from pp_mda_data a) mda on substring(a.productname,$9,$10) = mda.matnr) a left join pp_mes_outboundaopgroupctrl l on a.opgroup = l.opgroupno left join pp_daily_target b on a.werks = b.fact_id and a.opgroup = b.dept_id and a.mold_no = b.mold_code and a.stepname = b.stepname and a.create_date = b.targetdate where a.vbeln <> $11 and a.stepname in ($12,$13,$14,$15,$16) and a."action" = $17 and a.create_date = $1 and a.stepname = $2 and l.factoryno = $3 and l.buildno = $4 group by l.factoryno, l.buildno, l.opgroupno, l.arbpl, a.prodbatch, a.zzmdmark, a.mold_no, l.deptno, a.stepname, a.part, a.componentdescen, a."action", a.sizeno, b.targetqty order by l.deptno

3.检查table是否膨胀

查看每個頁的freespace率,作為是否執行vacuum full的依據

select
schema,relname,count(1) as num_pages,
pg_relation_size(schema||'.'||relname::text) as bytes_in_table,
pg_size_pretty(pg_relation_size(schema||'.'||relname::text)) as mbytes_in_table,
round(avg(avail::bigint),2) as "avg.freespace_size",
round(avg(avail::bigint)/8192,2) as "av.freespace_ratio"
from
(
select relnamespace::regnamespace as schema,relname,split_part(substring(pg_freespace(relnamespace::regnamespace::text||'.'||relname::text)::text,'\d+,\d+'),',',1) blkno,split_part(substring(pg_freespace(relnamespace::regnamespace::text||'.'||relname::text)::text,'\d+,\d+'),',',2) avail
from pg_class where relkind='r' and relnamespace::regnamespace::text='mes_report') freespacegroup by schema,relnameorder by  bytes_in_table desc

output:
在这里插入图片描述

4.执行vacuum full

postgres=#vacuum full pcnidss.pp_mda_data

再次檢查,size已经由原来的2994M下降到771M

select pg_size_pretty(pg_relation_size('pcnidss.pp_mda_data')

在这里插入图片描述

5.总结

1.pg中,dml操作会产生所谓的dead rows,平常的auto vacuum仅仅将dead rows删除,但是不会释放这部分空间,这将会造成无效scan,特别在full table scan时,会scan所有的空间,包含这部分已删除但未release的空间
2.要真正的释放已删除空间,必须作vacuum full,但这不是一个自动的作业(在pg10版本),另外需要注意的是vacuum full会消耗双倍的空间,实际上它是将表内的行insert到一个临时表,然后将原表清空后再insert回去,所以做这个动作时要查看表所在的磁盘是否有足够的空间

相关文章:

postgresql:记录表膨胀引起的io问题的处理

文章目录 1. io异常2.查看profile报告2.1 生成事发时间段的pgprofile2.2 查看报告 3.检查table是否膨胀4.执行vacuum full5.总结 1. io异常 iostat -x 1 20 Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq…...

Windows下安装RabbitMQ

1.安装Erlang 因为RabbitMQ是用Erlang语言编写的&#xff0c;所以在安装RabbitMQ之前需要先安装Erlang。 如果还未安装Erlang&#xff0c;官方下载安装包&#xff0c;点击Download Windows installer下载Erlang Downloads - Erlang/OTP 下载Erlang/OTP后&#xff0c;双击otp的…...

广州华锐互动VRAR:利用VR开展刑事案件公安取证培训,沉浸式体验提升实战能力

随着科技的飞速发展&#xff0c;虚拟现实(VR)技术为我们的生活和工作带来了前所未有的便利。近年来&#xff0c;VR技术在刑事案件公安取证培训中的应用逐渐显现出其独特优势。通过模拟真实的犯罪现场&#xff0c;VR技术为学员提供了沉浸式的体验&#xff0c;使他们在安全的环境…...

消息消费过程

前言 本文介绍下Kafka消费过程, 内容涉及消费与消费组, 主题与分区, 位移提交&#xff0c;分区再平衡和消费者拦截器等内容。 消费者与消费组 Kafka将消费者组织为消费组, 消息只会被投递给消费组中的1个消费者。因此, 从不同消费组中的消费者来看, Kafka是多播(Pub/Sub)模式…...

使用Lychee搭建个人图片存储系统并进行远程访问设置实现公网访问本地私人图床

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站&#xff0c;可以看做是云存储的一部分&#xff0c;既可…...

12-2- DCGAN -简单网络-卷积网络

功能 随机噪声→生成器→MINIST图像。 训练方法 0 损失函数:gan的优化目标是一个对抗损失,是二分类问题,用BCELoss 1 判别器的训练,首先固定生成器参数不变,其次判别器应当将真实图像判别为1,生成图像判别为0 loss=loss(real_out, 1)+loss(fake_out, 0) 2 生成器的…...

Redis持久化策略之RDB与AOF

文章目录 1.RDB1)基本介绍2)自动触发3)手动触发4)RDB文件5)优点缺点 2.AOF1)基本介绍2)使用方式3)工作流程4)重写机制5)AOF文件6)优点缺点 3.RDB AOF 我们都知道&#xff0c;redis 是一个基于内存的数据库。基于内存的好处是访问速度快&#xff0c;缺点是“不持久”——当数据…...

Python学习笔记--初识 Python 正则表达式

初识 Python 正则表达式 正则表达式是一个特殊的字符序列,用于判断一个字符串是否与我们所设定的字符序列是否匹配,也就是说检查一个字符串是否与某种模式匹配。 Python 自 1.5 版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正…...

webAPP基础学习

###视觉基础 part-I ####1.面试中常见的像素问题 >什么是像素? *1.什么是px? px-虚拟像素,css像素的单位 px是一个相对单位,相对于设备像素而言 >相对性 a.相对于同一个设备,css像素的可变的 css像素物理像素>会受到缩放的影响 css像素缩放倍数*单个物理像…...

RIP路由信息协议

RIP路由信息协议(Routing Information Protocol) 最先得到广泛应用的协议&#xff0c;最大优点是简单要求网络中的每个路由器都要维护一张表&#xff0c;表中记录了从它自己到其他每一个目的网络的距离RIP是应用层协议&#xff0c;它在传输层使用UDP&#xff0c;RIP报文作为UD…...

kubernetes 高可用集群

目录 一、haproxy负载均衡 二、pacemaker高可用 三、部署control-plane 四、部署worker node 实验环境 主机名 IP 角色 docker 192.168.67.10 harbor k8s1 192.168.67.11 control-plane k8s2 192.168.67.12 control-plane k8s3 192.168.67.13 control-plane k8s…...

java实现插入排序

图解 以下是Java实现插入排序的代码&#xff1a; public class InsertionSort {public static void main(String[] args) {int[] arr {5, 2, 4, 6, 1, 3};insertionSort(arr);System.out.println(Arrays.toString(arr)); // output: [1, 2, 3, 4, 5, 6]}public static void i…...

深度学习之基于YoloV5血红细胞检测识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习已经在许多领域中得到了广泛的应用&#xff0c;包括医疗健康领域。其中&#xff0c;YOLO&#xff08;You O…...

8、可视化高斯滤波器并完成高斯滤波

本节一起绘制一个可视化的高斯滤波器,同时对一个彩色图像增加高斯噪声,最后通过一个高斯滤波器对图像进行降噪处理。 就像上节说的那样,滤波不是学习重点,下面通过实操了解下原理即可。 可视化高斯滤波器 高斯滤波器符合高斯分布,并且是二维高斯分布,这一点在上一节高斯…...

Linux MMC子系统 - 5.eMMC 5.1工作模式-引导模式

By: Ailson Jack Date: 2023.11.19 个人博客&#xff1a;http://www.only2fire.com/ 本文在我博客的地址是&#xff1a;http://www.only2fire.com/archives/164.html&#xff0c;排版更好&#xff0c;便于学习&#xff0c;也可以去我博客逛逛&#xff0c;兴许有你想要的内容呢。…...

2342. 数位和相等数对的最大和 --力扣 --JAVA

题目 给你一个下标从 0 开始的数组 nums &#xff0c;数组中的元素都是 正 整数。请你选出两个下标 i 和 j&#xff08;i ! j&#xff09;&#xff0c;且 nums[i] 的数位和 与 nums[j] 的数位和相等。 请你找出所有满足条件的下标 i 和 j &#xff0c;找出并返回 nums[i] num…...

linux如何重置root密码

目录 当我们想要重置root管理员密码时&#xff0c;我们可以有两种方法进行&#xff1a; 方法一、init方法 1、重启系统&#xff0c;在下图所示界面按e键 2、随后进入以下界面&#xff0c;、将ro修改为rw&#xff0c;在行末尾添加init/bin/sh。​编辑 3、随后按Ctrlx启动到s…...

Java 类之 java.util.Properties

Java 类之 java.util.Properties 文章目录 Java 类之 java.util.Properties一、简介二、主要功能1、存储键值对2、读取文件与属性代码示例运行结果截图 3、设置属性并保存文件代码示例结果截图 4、遍历属性代码示例运行结果 关联博客&#xff1a;《基于 Java 列举和说明常用的外…...

我遇到的bug(活动)

目录 方向一&#xff1a;身为程序员遇到过的奔溃瞬间 方向二&#xff1a;如何解决遇到的奔溃瞬间 方向三&#xff1a;在解决完后获得的收获和体会 方向一&#xff1a;身为程序员遇到过的奔溃瞬间 在一个项目中&#xff0c;我负责实现一个复杂的图像处理算法。经过几天的努力…...

MIB 6.1810实验Xv6 and Unix utilities(3)pingpong

Mit6.S081-实验1-Xv6 and Unix utilities-pingpong问题_Isana_Yashiro的博客-CSDN博客 Write a user-level program that uses xv6 system calls to ping-pong a byte between two processes over a pair of pipes, one for each direction. The parent should send a byte to…...

别再让电机乱跑了!用STM32CubeIDE配置TB6612驱动GB37-520电机,保姆级避坑指南

从零到精通的STM32电机控制实战&#xff1a;TB6612驱动GB37-520全流程解析 第一次尝试用STM32驱动电机时&#xff0c;我遇到了一个令人抓狂的现象——电机要么纹丝不动&#xff0c;要么突然疯狂旋转&#xff0c;甚至冒出可疑的青烟。这种经历在初学者中非常普遍&#xff0c;而…...

Tina Linux嵌入式系统开发实战:从SDK结构到应用部署全解析

1. 项目概述&#xff1a;从零开始理解 Tina Linux 系统开发如果你正在为一个嵌入式设备寻找一个稳定、开源且高度可定制的操作系统&#xff0c;那么 Tina Linux 很可能已经进入了你的视野。它不是一个凭空出现的全新系统&#xff0c;而是基于 OpenWrt 和 Linux 内核深度定制而来…...

Lawnicons入门教程:从下载安装到启用主题化图标的完整流程

Lawnicons入门教程&#xff1a;从下载安装到启用主题化图标的完整流程 【免费下载链接】lawnicons Monochrome outlined brand icons for Android launchers. 项目地址: https://gitcode.com/gh_mirrors/la/lawnicons Lawnicons是一款由Lawnchair团队开发并由社区支持的…...

昇腾C解交织API文档

DeInterleave 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址: https://gitcode.c…...

3个步骤掌握LevelUI:可视化LevelDB数据库管理新体验

3个步骤掌握LevelUI&#xff1a;可视化LevelDB数据库管理新体验 【免费下载链接】levelui A GUI for LevelDB management based on atom-shell. 项目地址: https://gitcode.com/gh_mirrors/le/levelui 还在为LevelDB的命令行操作而烦恼吗&#xff1f;LevelUI为你带来了全…...

SQL-lab通关教程

Less-1单引号型完整注入流程打开靶场第一关你会看到如下图所示界面&#xff0c;由为方便后续靶场的payload输入查看&#xff0c;我这里了将直接利用hackbar进行sql注入测试。第1步&#xff1a;确认闭合方式payload&#xff1a;http://127.0.0.1:8080/Less-1/?id1分析&#xff…...

Chrome Regex Search:如何在网页上使用正则表达式快速查找信息

Chrome Regex Search&#xff1a;如何在网页上使用正则表达式快速查找信息 【免费下载链接】chrome-regex-search 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-regex-search 你是否曾经在浏览网页时&#xff0c;需要查找特定格式的信息却无从下手&#xff1f;…...

STM32F103C8T6 Bootloader分区与跳转详解:手把手配置64KB Flash的16+48分配方案

STM32F103C8T6 Bootloader分区与跳转实战&#xff1a;64KB Flash的1648分配方案深度解析 在嵌入式开发中&#xff0c;Bootloader的设计往往是项目成败的关键一环。对于资源受限的STM32F103C8T6这类仅有64KB Flash的MCU来说&#xff0c;如何在Bootloader和应用程序之间合理分配这…...

专业休闲卤味零食包装设计公司排名榜单盘点-哲仕设计上榜

专业休闲卤味零食包装设计公司排名榜单盘点-哲仕设计上榜休闲卤味零食属于大众刚需休闲食品&#xff0c;涵盖肉类卤制熟食、素菜卤味小吃、真空独立卤包、常温即食卤品、麻辣风干肉干、组合卤味礼盒等品类&#xff0c;广泛适用于居家休闲解馋、办公下午茶加餐、追剧娱乐食用、出…...

百考通AI智能聚类文献,告别碎片化罗列

撰写文献综述&#xff0c;是学术写作中承上启下的关键一步。它不仅要展示你对研究领域的了解程度&#xff0c;更要体现你的归纳能力、批判思维和问题意识。然而&#xff0c;现实中许多学生却因资料庞杂、逻辑混乱或时间不足&#xff0c;难以写出一篇真正“有据、有理、有深度”…...