postgres收缩工具两种工具的使用对比
postgres收缩工具安装和使用
第一章 需要使用插件处理膨胀的原因
Postgresql通过数据多版本实现MVCC,现象是删除数据并不会真正删除数据,而是修改标识,更新是通过删除+插入的方式进行,所以在频繁更新的OLTP系统,会造成数据膨胀。
PG数据库本身有处理膨胀问题的vacuum工具,该工具有三种类型,具体如下:
| vacuum 表名字 | vacuum full 表名字 | autovacuum |
|---|---|---|
| 不能回收空间 | 可以回收空间 | |
| 运行时可以正常访问数据表(共享锁) | 运行时不允许访问数据表(排他锁) | |
| 执行效率高 | 执行效率低 | |
| 作用是把表中的dead tuples进行删除标记变成可以使用的状态,并没有真正的物理删除,并且会更新统计信息和相关系统表 | 作用是物理删除dead tuples,并且把释放的空间重新交给操作系统。 本质时生成一个新的数据文件,然后把原来的表的live tuples 存放到新的数据文件中 | 只是个监控作用是用来启动自动清理进程的,autovacuum,autovacuum worker,vacuum+analyze |
如果autovacuum清理速度赶不上dead元组产生速度,就会造成表膨胀。如表格所示,vacuum治标不治本,vacuum full会锁表,所以需要一种用最少的锁重新组织PG数据库中的表资源的工具,pg_repack或者pg_squeeze工具便可以实现
第二章:使用pg_repack
一 使用pg_repack的原理
1 总体思路:
新建一个文件,然后将老文件数据拷贝过来,然后进行文件切换,它不阻塞读写的秘诀就是新建文件和拷贝的过程是在线做的,在没有完成拷贝之前,原来的文件还是可以读写的,只有在切表那一瞬间有可能有影响。在线拷贝过程:源库的数据文件一直在变,所以表文件其实分为两部分,一部分是基础数据,一部分是增量数据,基础数据的拷贝就是正常的拷贝,增量数据是通过创建触发器来捕获在该表上的读写操作来实现的,待基础数据拷贝完后再将trigger捕获的增量sql进行应用,达到最终效果。
2 具体原理步骤如下:
对表执行全表repack:
-
创建一个记录表,用于记录原表中的记录的修改
-
在原表上创建一个触发器,记录插入、更新、和删除操作到日志表
-
创建一个新表,包含原表中的所有的记录
-
在新表上创建索引
-
将日志表中的变更应用到新表
-
使用system catalogs将原表和新表进行swap,包含索引和toast表
-
删除原先的表
对索引执行repack
-
使用concurrently创建新索引
-
将新的索引和老的索引进行swap
-
删除原先的索引
二 如何使用
1 安装
-
下载安装包:
https://pgxn.org/dist/pg_repack/
-
解压缩并编译
cp pg_repack-1.4.8.zip /home/postgressu - rootunzip pg_repack-1.4.8.zipcd pg_repack-1.4.8makemake install
- 创建拓展
psqlcreate extension pg_repack;
2 使用举例
postgres=# create table test(id int primary key,name varchar(255));
postgres=# insert into test select generate_series(1,50000000),'a';
postgres=# select * from pgstattuple('test');table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent
-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------181239808 | 5000000 | 150000000 | 82.76 | 0 | 0 | 0 | 620336 | 0.34
postgres=# \dt+ testList of relationsSchema | Name | Type | Owner | Size | Description
相关文章:
postgres收缩工具两种工具的使用对比
postgres收缩工具安装和使用 第一章 需要使用插件处理膨胀的原因 Postgresql通过数据多版本实现MVCC,现象是删除数据并不会真正删除数据,而是修改标识,更新是通过删除+插入的方式进行,所以在频繁更新的OLTP系统,会造成数据膨胀。 PG数据库本身有处理膨胀问题的vacuum工…...
仿真入门——CST软件如何设置分布式计算的共享储存
在 CST Studio Suite 的分布式计算中,常有用户因为某台机器的网络问题丢失某个数据。这里介绍一种方法,可以在使用分布式计算或 MPI 计算时设置共享存储。在这种情况下,不涉及文件传输,所有文件操作都在共享文件的媒介上完成。 数…...
【JVM基础17】——实践-说一下JVM调优工具
目录 1- 引言:2- ⭐核心:2-1 命令工具jpsjstackjmapjstat 2-2 可视化工具jconsoleVisualVM 3- 小结:3-1 说一下 JVM 调优的工具 1- 引言: 命令工具 jps——进程状态信息jstack——查看Java进程内线程的堆栈信息jmap——查看堆转…...
【QT】Qt中Websocket的使用
一、WebSocket的定义 WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,…...
【vue3】【elementPlus】【国际化】
1.如需从0-1开始,请参考 https://blog.csdn.net/Timeguys/article/details/140995569 2.使用 vue-i18n 模块: npm i vue-i18n3.在 src 目录下创建 locales 目录,里面创建文件:en.js、zh-cn.js、index.js 语言js文件:…...
用python实现求两个整数的最大公约数
def gcd(a, b): """计算最大公约数""" while b: a, b b, a % b return abs(a) 下面是对 gcd 函数的逐行解释: def gcd(a, b):"""计算最大公约数"""定义函数:这里定义了一个名为 gcd…...
Linux 内核源码分析---proc 文件系统
proc文件系统 进程数据文件系统(process data filesystem, procfs)装载在 /proc,缩写为 procFS。 proc 文件系统是一种虚拟文件系统,其信息不能从块设备读取。只有在读取文件内容时才动态生成相应的信息。使用proc文件系统&…...
视频号直播回放怎么下载?
一、如果是下载自己直播回放视频: 方法一:视频号助手 打开网址:视频号助手 登陆账号后。下面路径,先点击成回放, 后就可以在下面路径,下载全场回放 但是这种有个缺点,就是不能分段下载。这样…...
【第九节】python中xml解析和json编解码
目录 一、Python XML 解析 1.1 什么是XML 1.2 Python 对 XML 的解析方法 1.3 SAX解析xml 1.4 xml.dom解析xml 1.6 ElementTree解析XML 二、Python编解码json 2.1 什么是json 2.2 使用json 库 2.3 使用第三方库Demjson 一、Python XML 解析 1.1 什么是XML XML&#x…...
yolo v8部署到云服务器问题记录
环境安装 1、运行项目报错:no python application found, check your startup logs for errors 在云服务器pytorch版本安装错了,安装了GPU版本,需要安装CPU版本 # CPU only 使用下面这段代码避免出现第二个错误 pip install torch2.3.1 to…...
端口被占用,杀死进程的步骤
一、 查看所有进程占用的端口 在开始-运行-cmd,输入:netstat –ano可以查看所有进程 二、查看占用指定端口的程序 查看被那个端口占用,可以用该命令: 三、使用命令杀死进程 杀死进程,使用命令:...
接口入门(企业常见使用,一分钟搞定版)
目录 1、接口的定义 定义位置 接口内容 2、接口的使用 正常实现接口 接口当做函数参数 匿名实现接口 3、OPPO便签接口具体分析 总结一下: 1、接口的定义 定义位置 可以写在类中,但注意现在接口名字是 类名.接口名 可以单独写在一个文件 接口内…...
深入解析:Cookie 与 Session 的区别及应用场景
引言 在Web开发中,Cookie 和 Session 是两种常用的用户状态管理机制。虽然它们的目标都是在无状态的HTTP协议中维护用户的状态,但它们的工作原理和适用场景却有所不同。在本文中,我们将深入探讨 Cookie 和 Session 的区别,并通过…...
LLM金融文本分类文档说明
Python注意事项: 1,创建虚拟环境: conda create --prefixD:\software\Anaconda3\envs\finance_analysis python3.10.4 conda create -p D:/software/anaconda3/envs/finance_analysis python3.10.4 注释: D:\software\anaconda3\e…...
EI检索,2天录用,3天见刊!截稿在即,这本水刊你还不投吗?
点击关注:关注GZH【欧亚科睿学术】,GET完整版2023JCR分区列表! 🎉 🎉 🎉 🎉 恭喜!这本毕业水刊仅2天录用!3天见刊! 重要时间节点如下 2024-08-03 Sub…...
sql获取过去的小时数
TIMESTAMPDIFF(HOUR, create_time, NOW()) AS pastHours 是一条 SQL 语句的一部分,它使用 TIMESTAMPDIFF 函数来计算两个时间点之间的差异,并将结果标记为 pastHours。 让我们详细解析一下这条语句: TIMESTAMPDIFF 函数: 这个函数用于计算两…...
【Android Studio】彻底卸载
文章目录 卸载程序控制面板卸载安全软件卸载 重启计算机删除文件重启计算机 我们在Android开发时涉及重装时,如果卸载不干净,再次安装是不会正常运行项目的,接下来就让我教你如何删除干净吧。 卸载程序 控制面板卸载 control控制面板一>…...
美术版权可以当做商标使用吗
美术版权与商标的区别及不可混用性分析 在知识产权领域,美术版权和商标权是两个重要的概念,它们各自承载着不同的法律意义和保护范围。 美术版权概述 美术版权,又称著作权,是指著作权人对其创作的美术作品所享有的权利。这些作品…...
控制某些请求不记录日志
说明:由于统一拦截日志请求,导致所有匹配的请求都会打印日志,这里需要控制有些请求执行不打印日志,比如定时每隔几秒执行某些请求。 具体实现如下: 一、自定义注解,如下: /** * Description: …...
Java线程池原理剖析和应用指南
目录 Java线程池详解一、Java线程池简介池化思想池化思想的优点 二、线程池的实现原理分析实现线程池需要考虑哪些问题?线程池的简单使用示例线程池原理的简单图示 三、Executor详解Executor简介Executor框架的继承结构总结ExecutorExecutorService 四、ThreadPoolE…...
国产最强开源模型 GLM-5.1 来了!Ollama 一键部署,开启 8 小时自主 AI 工作
引言 GLM-5.1的开源,确实是近期AI圈的一则重磅消息。为了让内容更充实,我将上一版的介绍与GLM-5的详细对比融合在了一起,这样能更清晰地看到它的进化。 一图看懂:GLM-5 vs. GLM-5.1 为了让你直观感受GLM-5.1的进化幅度ÿ…...
代码随想录算法训练营Day-21 | 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
669. 修剪二叉搜索树1.递归函数作用:返回修剪后的二叉树的新的根节点2.终止条件:遇到空节点返回NULL;遇到范围之外的节点执行删除操作:如果该节点值小于最小值,说明右子树有可能还有符合要求的节点,所以返回…...
Z-Image-Turbo镜像实战指南:Xinference多模型管理+Gradio多Tab界面配置
Z-Image-Turbo镜像实战指南:Xinference多模型管理Gradio多Tab界面配置 1. 快速了解Z-Image-Turbo镜像 今天给大家介绍一个特别实用的AI镜像——Z-Image-Turbo,这是一个基于Xinference框架的多模型管理平台,专门用于生成高质量的人物图像。如…...
零基础入门Speech Seaco Paraformer:一键部署中文语音识别Web界面
零基础入门Speech Seaco Paraformer:一键部署中文语音识别Web界面 1. 语音识别技术简介 语音识别技术(Automatic Speech Recognition, ASR)正在改变我们与设备交互的方式。想象一下,你只需要对着电脑说话,它就能自动…...
微软VibeVoice-TTS-Web-UI:长文本语音合成效果展示
微软VibeVoice-TTS-Web-UI:长文本语音合成效果展示 1. 突破性的语音合成体验 1.1 从机械朗读到情感表达 传统语音合成技术往往停留在"文字转声音"的基础层面,生成的语音缺乏情感起伏和自然韵律。VibeVoice-TTS-Web-UI通过创新的语言理解和声…...
OpenClaw多模态编程:用Phi-3-vision-128k-instruct开发视觉脚本
OpenClaw多模态编程:用Phi-3-vision-128k-instruct开发视觉脚本 1. 为什么我们需要视觉脚本? 去年夏天,我接手了一个自动化测试项目,需要每天重复操作几十次相同的GUI流程。传统RPA工具在面对动态界面时频繁失效——按钮位置偏移…...
5步轻松搞定WE Learn高效学习:AI自动答题+智能刷课提升300%效率
5步轻松搞定WE Learn高效学习:AI自动答题智能刷课提升300%效率 【免费下载链接】WELearnHelper 显示WE Learn随行课堂题目答案;支持班级测试;自动答题;刷时长;基于生成式AI(ChatGPT)的答案生成 项目地址: https://gi…...
【2025最新】基于SpringBoot+Vue的大型商场应急预案管理系统管理系统源码+MyBatis+MySQL
摘要 随着城市化进程的加速和商业综合体的快速发展,大型商场作为人员密集场所,其安全管理面临严峻挑战。传统应急预案管理多依赖纸质文档和人工操作,存在响应速度慢、信息更新滞后、协同效率低等问题。近年来,数字化技术在应急管理…...
Fish Speech-1.5中文语音惊艳案例:古诗词吟诵/方言童谣/戏曲念白生成
Fish Speech-1.5中文语音惊艳案例:古诗词吟诵/方言童谣/戏曲念白生成 你听过AI用抑扬顿挫的语调吟诵唐诗宋词吗?你听过AI用地道的方言念出童年歌谣吗?你听过AI模仿戏曲念白,字正腔圆、韵味十足吗? 今天,我…...
景区气象站是什么
景区气象站监测项目包含负氧离子、pm2.5、pm10、温度、湿度、气压、含氧量、噪音、风速、风向等,是一款用于林业、景区、公园、环保、气象、农业等领域的实时环境气象监测与发布的监测系统,主要针对景区、湿度公园空气质量环境进行集中监控和管理&#x…...
