PostgreSQL - 查看表膨胀空间

news2024/9/23 15:19:26

目录

使用pgstattuple插件查看表膨胀空间

死元组&膨胀系数清理

查看表占用磁盘空间大小是如何组成的

什么是fms和vm?

什么是TOAST?

查看表和其关联的TOAST表的oid的关系

方法一

方法二

参考文档


使用pgstattuple插件查看表膨胀空间

select *,1.0 - tuple_len::numeric / table_len as bloat from pgstattuple('table_name');

table_len bigint

物理关系长度(以字节为单位)
tuple_count bigint存活元组数量
tuple_len bigint活动元组的总长度(以字节为单位)
tuple_percent float8存活元组的百分比
dead_tuple_count bigint死元组数量
dead_tuple_len bigint死元组的总长度(以字节为单位)
dead_tuple_percent float8死亡元组的百分比
free_space bigint总可用空间(以字节为单位)
free_percent float8可用空间百分比
bloat表膨胀系数

死元组&膨胀系数清理

  • 使用vacuum命令,可以清理死元组,但是膨胀系数不会降低。因为该命令不会将磁盘空间返回给操作系统,但是新的数据可以复用空间。
  • 使用vacuum full命令,可以降低膨胀系数。因为该命令会将磁盘空间返回给操作系统,但是会产生独立锁,导致清理期间表不可用。且清理期间磁盘使用空间最多会翻倍,因为操作是将有用的数据写到一个新的表里,结束后删除旧表,释放空间。

其他详细死元组&膨胀系数清理的信息,可以参考:postgresql磁盘空间清理

查看表占用磁盘空间大小是如何组成的

select pg_relation_size('table_name', 'main') as main, \
                pg_relation_size('table_name', 'fsm') as fsm, \
                pg_relation_size('table_name', 'vm') as vm, \
                pg_relation_size('table_name', 'init') as init, \
                pg_relation_size('table_name') as pg_relation_size, \
                pg_total_relation_size('toast_oid') as toast, \
                pg_table_size('table_name') as pg_table_size, \
                pg_indexes_size('table_name') as pg_indexes_size, \
                pg_total_relation_size('table_name') as pg_total_size;
mainfsmvminitpg_relation_sizetoastpg_table_sizepg_indexes_sizepg_total_size
31562310451277602816902758403156231045122504810496318214545408137802727424456017272832

关联关系:

  • main = pg_relation_size ;其实pg_relation_size('table_name')就是pg_relation_size('table_name', 'main')的简写
  • 表占空间的大小 = main + fsm + vm + init + toast = pg_table_size
  • 索引占空间的大小 = pg_indexes_size
  • 表真实占用磁盘空间 = 表占空间的大小 + 索引占空间的大小 = pg_table_size + pg_indexes_size

什么是fms和vm?

空闲空间映射(FSM) - free space maps 
每一个表和索引(除了哈希索引)都有一个空闲空间映射(FSM)来保持对关系中可用空间的跟踪;
它伴随着主关系数据被存储在一个独立的关系分支中,以关系的文件节点号加上一个_fsm后缀命名;

FSM文件是执行VACUUM操作时,或者是为了插入行而第一次查询FSM文件时才会创建;

可见性映射(VM) - visual map
每一个表都有一个可见性映射(VM)用来跟踪哪些页面只包含已知对所有活动事务可见的元组,它也跟踪哪些页面只包含未被冻结的元组;
它伴随着主关系数据被存储在一个独立的关系分支中,以该关系的文件节点号加上一个_vm后缀来命名。

VM文件中为每个数据块设置了一个标志位,用来标记数据块中是否存在需要清理的行。
有了这个文件后,通过VACUUM命令扫描这个 文件时,如果发现VM文件中这个数据块上的位表示该数据块没有需要清理的行,则会跳过对这个数据块的扫描,从而加快VACUUM清理的速度。

什么是TOAST?

TOAST(超尺寸属性存储技术-The Oversized-Attribute Storage Technique)。

PostgreSQL使用固定的页面尺寸(通常是8kB),并且不允许元组跨越多个额页面。因此不可能直接存储非常大的域值。为了克服这个限制,大的域值会被压缩并/或分解成多个物理行。这些处理对用户都是透明的,只是在大部分的后端代码上有一些小的影响。这个技术的昵称是TOAST(或者“切片面包之后的最好的东西”)。TOAST 机制也被用来提升内存中大型数据值的处理。

查看表和其关联的TOAST表的oid的关系

数据库表和TOAST表的信息都在pg_class表中

数据库表信息所在行记录了:表的oid,表名,表关联的TOAST表的oid

TOAST表信息所在的行记录了:TOAST表的oid,TOAST表的表名

方法一

一条语句直接导出表和其TOAST表的关联关系

SELECT
  c.relname AS "main_table",
  c.oid AS "main_table_oid",
  t.relname AS "toast_table",
  t.oid AS "toast_table_oid"
FROM pg_class c
JOIN pg_class t ON c.reltoastrelid = t.oid
WHERE c.relkind = 'r';

方法二

1.查询表、表oid,和其关联的TOAST表的oid

select oid,relname,reltoastrelid from pg_class where relname = 'table_name';

2.使用TOAST表的iod,查询TOAST表的信息

(其实一般情况下,有了TOAST表的oid就够用了)

select oid,relname from pg_class where oid = 'toast_iod';

参考文档

Pgsql表膨胀的产生及处理(oracle,postgres) - AI牛丝

pg_relation_size,pg_table_size,pg_indexes_size,pg_total_relation_size之间的关系-CSDN博客

PostgreSQL 之 FSM和VM的理解_vacuum命令通过扫描后缀为_fsm的文件可以加快vacuum进程-CSDN博客

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

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

相关文章

Clickhouse 单机部署安装

前言 在大数据的时代背景下,数据的处理和分析能力成为企业竞争力的关键。ClickHouse,作为一款由俄国Yandex公司开发的分布式数据分析型数据库,凭借其卓越的性能和稳定性,赢得了业界的广泛关注。本文将介绍ClickHouse的基本概念、…

中科数安|公司办公终端、电脑文件数据 \ 资料防泄密系统

#中科数安# 中科数安是一家专注于信息安全技术与产品研发的高新技术企业,其提供的公司办公终端、电脑文件数据及资料防泄密系统(也称为终端数据防泄漏系统或简称DLP系统)主要服务于企业对内部敏感信息的安全管理需求。 www.weaem.com 该系统…

在webapp中手动发布一个应用

部署应用前,我们需要下载Tomcat。 下载官网: Apache Tomcat - Welcome! 1、下载 第一步 : 找到Download目录下的Tomcat8 第二步:选择下载第一个zip链接 2、下载完成后,解压并打开Tomcat文件 3、找到并点击webapp文件 创建一个文件夹 在创建的文件中…

蓝桥杯第十一届电子类单片机组程序设计

目录 前言 单片机资源数据包_2023(点击下载) 一、第十一届比赛原题 1.比赛题目 2.赛题解读 1)计数功能 2)连续按下无效按键 二、部分功能实现 1.计数功能的实现 2.连续按下无效按键的处理 3.其他处理 1)对于…

【危化品泄漏源定位】基于改进哈里斯鹰优化算法的危化品泄漏源定位算法 溯源定位算法【Matlab代码#63】

文章目录 【获取资源请见文章第7节:资源获取】1. 算法概述2. 原始哈里斯鹰算法(HHO)3. 改进哈里斯鹰算法(IHHO)3.1 动态自适应逃逸能量3.2 动态扰动策略 4. 构建源强和位置反算模型5. 部分代码展示6. 仿真结果展示7. 资…

BigDecimal类 --java学习笔记

BigDecimal 用于解决浮点型运算时,出现结果失真的问题 BigDecimal常用构造器和方法: HALF_UP 四舍五入

Qt-QPainter drawText方法不同重载之间的区别

QPainter类的drawText方法有如下重载: void drawText(const QPointF &position, const QString &text) void drawText(const QPoint &position, const QString &text) void drawText(int x, int y, const QString &text) void drawText(co…

人人站CMS后台登不进去解决方案(已解决)

公司有一个网站使用的是人人站CMS,最近发现后台登录不进去,有以下报错 发生以下错误: file get contents(http://www.rrzcms.com/Public/cms/config/config.ison): failed to open stream: HTTP reguest failed! 请求的URL导致内部服务器错误。 如果您反…

三维铁木辛柯梁Matlab有限元编程 | 弹簧支座 | 弹性支撑单元| Matlab源码 | 理论文本

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…

茶叶加工厂用什么ERP比较好

茶叶加工厂,作为传统与现代相结合的产业,面临着销售渠道多样化、管理场景复杂化以及数据共享需求迫切等挑战。在这样的背景下,选择一款合适的ERP软件显得尤为重要。那么,茶叶加工厂究竟该选用什么样的ERP系统呢? 在众多ERP软件中…

C# danbooru Stable Diffusion 提示词反推 Onnx Demo

目录 说明 效果 模型信息 项目 代码 下载 C# danbooru Stable Diffusion 提示词反推 Onnx Demo 说明 模型下载地址:https://huggingface.co/deepghs/ml-danbooru-onnx 效果 模型信息 Model Properties ------------------------- ----------------------…

用户案例|向量引擎在携程酒店搜索中的应用场景和探索

Zilliz AI 初创计划是面向 AI 初创企业推出的一项扶持计划,预计提供总计 1000 万元的 Zilliz Cloud 抵扣金,致力于帮助 AI 开发者构建高效的非结构化数据管理系统,助力打造高质量 AI 服务与运用,加速产业落地。访问https://zilliz…

部署prometheus+Grafana可视化仪表盘监控服务

一、部署prometheus及监控仪表盘 简介 Prometheus是开源监控报警系统和时序列数据库(TSDB)。 Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控,输出被监控组件信息的HTTP接口被叫做expo…

微信公众号测试号里面显示若依前端页面

内网穿透 注册购买内网穿透隧道 https://natapp.cn/ 启动成功 这样就绑定你的本地启动项目 微信公众测试号配置 注册微信公众号测试号 获取access_token,AppID与appsecret 调用微信官方接口生成access_token(AppID和AppSecret可在“微信公众平台-设置…

IAB视频广告标准《数字视频和有线电视广告格式指南》之 简介、目录及视频配套广告 - 我为什么要翻译介绍美国人工智能科技公司IAB系列(2)

写在前面 谈及到中国企业走入国际市场,拓展海外营销渠道的时候,如果单纯依靠一个小公司去国外做广告,拉渠道,找代理公司,从售前到售后,都是非常不现实的。我们可以回想一下40年前,30年前&#x…

蓝桥杯--冶炼金属

目录 一、题目 二、解决代码 (1)版本一(报错:超时) 代码分析 (2)版本二(不会超时) 代码分析 (3)版本三(最终精简版)…

Github 2024-03-11 开源项目周报 Top15

根据Github Trendings的统计,本周(2024-03-11统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4TypeScript项目3Jupyter Notebook项目3C#项目1HTML项目1CSS项目1Dart项目1Lua项目1Shell项目1Rust…

Vue3--数据和方法

data 组件的 data 选项是一个函数。Vue 在创建新组件实例的过程中会自动调用此函数。   data选项通常返回一个对象&#xff0c;然后 Vue 会通过响应性系统将其包裹起来&#xff0c;并以 $data 的形式存储在组件实例中。 <!DOCTYPE html> <html lang"en"&g…

Unload-labs

function checkFile() {var file document.getElementsByName(upload_file)[0].value;if (file null || file "") {alert("请选择要上传的文件!");return false;}//定义允许上传的文件类型var allow_ext ".jpg|.png|.gif";//提取上传文件的类…

【学习记录】调试千寻服务+DTU+导远RTK过程的记录

最近调试车载定位的时候&#xff0c;遇到了一些问题&#xff0c;千寻服务已经正确配置到RTK里面了&#xff0c;但是导远的定位设备一直显示RTK浮动解&#xff0c;通过千寻服务后台查看状态&#xff0c;长时间显示不合法的GGA值。 首先&#xff0c;通过四处查资料&#xff0c;千…