PostgreSQL的表碎片

PostgreSQL的表碎片

在 PostgreSQL 中,表碎片化可能会影响数据库性能和存储效率。碎片化通常是由于频繁的插入、更新和删除操作引起的。以下是关于 PostgreSQL 表碎片化的详细信息,包括如何识别和处理表碎片化。

什么是表碎片化?

表碎片化是指表数据在文件系统中的不连续存储,导致读取和写入操作的效率降低。常见原因包括:

  • 频繁的插入和删除:导致数据块中出现“空洞”。
  • 更新操作:由于 PostgreSQL 的 MVCC(多版本并发控制)机制,更新操作会生成新的行版本,原来的空间会被标记为可重用但是不立即回收。

如何检测表碎片化?

表碎片化可以通过分析表和索引的膨胀比例来检测。pg_stat_user_tablespg_relation_size 是两个常用的系统表和函数。

使用 pgstattuple 拓展

pgstattuple 拓展可以详细报告表和索引的使用情况,包括死元组和空闲空间。你需要先安装这个扩展:

CREATE EXTENSION pgstattuple;

然后运行如下查询:

SELECT * FROM pgstattuple('your_table_name');

该查询将返回如下信息:

  • table_len: 表的总大小。
  • tuple_count: 活跃元组数。
  • tuple_len: 活跃元组的总大小。
  • dead_tuple_count: 死元组数(可以视为碎片)。
  • dead_tuple_len: 死元组的总大小。

输出:

white=# select count(*) from yewu1.t1;count  
---------1000000
(1 row)white=# SELECT * FROM pgstattuple('yewu1.t1');table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent 
-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------51642368 |     1000000 |  40888896 |         79.18 |                0 |              0 |                  0 |      20928 |         0.04
(1 row)white=# delete from yewu1.t1;
DELETE 1000000
white=# commit;
WARNING:  there is no transaction in progress
COMMIT
white=# SELECT * FROM pgstattuple('yewu1.t1');table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent 
-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------51642368 |           0 |         0 |             0 |          1000000 |       40888896 |              79.18 |      20928 |         0.04
(1 row)
使用 pg_stat_user_tablespg_relation_size
SELECT schemaname,relname AS table_name,n_dead_tup AS dead_tuples,pg_size_pretty(pg_total_relation_size(relid)) AS total_size
FROMpg_stat_user_tables where relname='t1'
ORDER BYn_dead_tup DESC;

这个查询显示了每个表的死元组计数和表的总大小。死元组计数较高的表可能存在严重的碎片化问题。

如何处理表碎片化?

一般通过以下两种方式处理表碎片化:

  1. VACUUM:
    • VACUUM: 回收死元组空间,但不会重组表。常用于日常维护。
    • VACUUM FULL: 清理并重组表,但会锁表,适用于严重碎片化的情况。
-- 回收死元组空间
VACUUM your_table_name;-- 清理并重组表
VACUUM FULL your_table_name;
  1. REINDEX:
    • 重新创建索引,适用于索引碎片化。
REINDEX INDEX your_index_name;-- 或者重新创建整个表的所有索引
REINDEX TABLE your_table_name;

自动维护

PostgreSQL 提供了自动维护工具:autovacuumautovacuum 会自动清理和优化表,以减少手动维护的需要。你可以通过配置 postgresql.conf 文件中的相关参数来调整其行为:

  • autovacuum: 是否启用自动清理(默认启用)。
  • autovacuum_vacuum_thresholdautovacuum_analyze_threshold: 起始清理和分析的死元组数。
  • autovacuum_vacuum_scale_factorautovacuum_analyze_scale_factor: 起始清理和分析的表大小比例。

这些配置可以通过 SQL 修改:

ALTER SYSTEM SET autovacuum = 'on';
ALTER SYSTEM SET autovacuum_vacuum_threshold = 50;
ALTER SYSTEM SET autovacuum_analyze_threshold = 50;
ALTER SYSTEM SET autovacuum_vacuum_scale_factor = 0.2;
ALTER SYSTEM SET autovacuum_analyze_scale_factor = 0.1;

结论

表碎片化影响数据库性能,通过有效的检测和维护机制,可以显著提升数据库性能。定期执行 VACUUMREINDEX 操作,以及启用并正确配置 autovacuum,将有助于保持数据库的高效运行。

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

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

相关文章

Spring Cloud 工程搭建服务注册_服务发现

文章目录 Spring Cloud 工程搭建服务拆分示例数据库工程搭建构建父子工程创建父工程创建子项目完成两个接口 远程调用实现添加ProductInfo字段定义RestTemplate修改OrderService 服务注册/服务发现 - Eureka注册中心CAP理论常见的注册中心ZookeeperEurekaNacos Eureka 介绍搭建…

SSM框架VUE电影售票管理系统开发mysql数据库redis设计java编程计算机网页源码maven项目

一、源码特点 smm VUE电影售票管理系统是一套完善的完整信息管理类型系统,结合SSM框架和VUE、redis完成本系统,对理解vue java编程开发语言有帮助系统采用ssm框架(MVC模式开发),系 统具有完整的源代码和数据库&#…

vue echarts tooltip动态绑定模板,并且处理vue事件绑定

先上代码: tooltip: {// 这里是车辆iconshow: true,// trigger: "item",// backgroundColor: "transparent",appendToBody: true,textStyle: {color: "#ffffff" //设置文字颜色},formatter: (params) > {const TruckTooltip Vue.…

【SOP】Windows下安装Neo4j流程

Neo4j简介 Neo4j 是一个基于图形结构的 NoSQL 数据库,专门用于存储和管理图数据。与传统的关系型数据库不同,Neo4j 使用 图(graph)的形式来表示数据,其中数据点(称为 节点)通过 边(…

遥感图像语义分割数据集制作(使用ArcGIS Pro)

0. 引言 图像分割就是把图像空间按照一定的要求分成一些“有意义”的区域的技术叫图像分割。一幅图像通常是由代表物体的图案与背景组成,简称物体与背景。若想从一幅图像中“提取”物体,可以设法用专门的方法标出属于该物体的点,如把物体上的…

WebSocket实现在线聊天室

项目实现源码: 前端源码 后端源码 1.常见的消息推送方式 1.1 轮询 1.1.1 轮询的概念 客户端以固定的事件间隔(例如每秒或几分钟)向服务器发送HTTP请求,服务器收到请求后,处理请求并返回数据给客户端 轮询具体实现htt…

计算机毕业设计之:宠物服务APP的设计与实现(源码+文档+讲解)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

如何把PDF样本册转换为网址链接

​随着互联网的普及,将纸质或PDF格式的样本册转化为网址链接,以便于在线浏览和分享,变得越来越重要。本文将为您详细讲解如何将PDF样本册转换为网址链接,让您轻松实现线上展示和分享。 一、了解PDF样本册与网址链接 1. PDF样本册…

游戏账号系统小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,卖家管理,游戏类别管理,游戏账号管理,站内联系管理,交易订单管理,帐号退货管理 微信端账号功能包括:系统首…

多输入多输出预测 | NGO-BP北方苍鹰算法优化BP神经网络多输入多输出预测(Matlab)

多输入多输出预测 | NGO-BP北方苍鹰算法优化BP神经网络多输入多输出预测(Matlab) 目录 多输入多输出预测 | NGO-BP北方苍鹰算法优化BP神经网络多输入多输出预测(Matlab)预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介…

数据结构:树的定义及其性质

树的定义 树是一种重要的非线性数据结构,树作为一种逻辑结构,同时也是一种分层结构。具有以下两个特点: 1.树的根结点没有前驱,除根结点意外的节点只有一个前驱 2.树中所有结点都可以有0个或多个后继 树结构在多个领域都有广泛…

GDB 调试

1. wsl 环境下搭建gdb: 1.1安装环境: #安装gcc编译器 (x86 linux) $ sudo apt install gcc #检查安装版本,看是否成功 $ gcc -v #安装gdb编译器 (x86 linux) $ sudo apt install gdb #检查安装是否成功 $ gdb 1.2 编写自己的程序&…

刷题学习日记 (1) - SWPUCTF

写这篇文章主要是想看看自己一个下午能干啥,不想老是浪费时间了,所以刷多少题我就会写多少题解,使用nss随机刷题,但是今天下午不知道为啥一刷都是SWPUCTF的。 [SWPUCTF 2021 新生赛]gift_F12 控制台ctrlf搜索flag即可&#xff0…

处理not in gzip format异常

1、为什么会触发这个异常? 当我们使用GZIPInputStream的read方法进行读取数据时,它会自动处理gzip格式的压缩数据,将它解析成原始的二进制数据。但是,如果你没有将原始数据进行gzip压缩后传入GZIPInputStream流,进行r…

车载诊断技术:汽车健康的守护者

一、车载诊断技术的发展历程 从最初简单的硬件设备到如今智能化、网络化的系统,车载诊断技术不断演进,为汽车安全和性能提供保障。 早期的汽车诊断检测技术处于比较原始的状态,主要依靠操作经验和主观评价。随着汽车工业的发展,车载诊断技术也经历了不同的阶段。20 世纪初…

视频融合共享平台LntonAIServer视频智能分析抖动检测算法和过亮过暗检测算法

LntonAIServer作为一款智能视频监控平台,集成了多种先进的视频质量诊断功能,其中包括抖动检测和过暗检测算法。这些算法对于提升视频监控系统的稳定性和图像质量具有重要意义。 以下是对抖动检测算法和过暗检测算法的应用场景及优势的详细介绍。 一、L…

数据分析:线性回归计算嵌套的组间差异

文章目录 介绍加载依赖包导入数据数据预处理数据概览线性回归画图森林图的特点:森林图的作用:总结系统信息介绍 在统计学中,嵌套的组间差异分析是一种评估不同组别间差异的方法,尤其适用于层级结构或分组数据。通过线性回归模型,我们可以计算出各个变量对于因变量的影响,…

基于Node.js+Express+MySQL+VUE新闻网站管理系统的设计与实现

1. 引言 随着互联网技术的发展,人们获取信息的方式发生了巨大的变化。传统的新闻媒体逐渐向数字化、智能化方向发展。新闻推荐网站管理系统能够帮助新闻网站更好地管理和推荐新闻内容,提高用户体验。本文将详细介绍一个新闻推荐网站管理系统的整体设计与…

《十年国庆游,洞察中国旅游新趋势》

作者:侯炯 一、十年国庆旅游数据总览 过去十年,中国国庆旅游市场呈现出丰富的变化和强劲的发展态势。从接待游客人次来看,2014 年接待国内游客 4.75 亿人次,到 2019 年已增长至 7.82 亿人次,2023 年国内旅游出游人数更…

北斗三号多模对讲机TD70:公专网融合、数模一体、音视频调度,推动应急通信效能升级

随着国家对应急通信和精准定位技术的重视程度不断提高,相关技术和设备的研发与应用也得到了迅猛发展。特别是在边防巡逻、林业巡防、海上作业等领域,通信设备的可靠性和功能性直接关系到人员的生命安全和任务的成功完成。 近年来,我国政府高度…