Greenplum 查找数据目录占用最大的表

news/2024/7/9 23:05:11 标签: postgresql

背景

社区中某同学提出问题:
某环境磁盘占用空间较大,于是想找到数据目录占用最大的表。使用常规查询找不出来,于是到数据目录下分析filenode,找到3个filenode占了400G。然而根据filenode从pg_class中确找不到对应的relfilenode。
查询方法为:

select oid,relname,relfilenode from pg_class where relfilenode=...

分析

PostgreSQL中的表会有一个RelFileNode值指定这个表在磁盘上的文件名(外部表、分区表除外)。一般情况下在pg_class表的relfilenode字段可以查出这个值,但是有一些特定表在relfilenode字段的查询结果是0,如某些系统表。
另外,对于普通表,将对表执行truncate,vacuum full等操作后,会重写这个表的数据,也会引发这个表relfilenode值的变更。
具体可以参考文章https://blog.csdn.net/weixin_46199817/article/details/113108402 中的描述。
这意味着,某个对象的Oid和RelFileNode可能并不能完全对应起来,所以,当在磁盘目录中找到一个filenode,但从pg_class中找不到也是有可能的。

解决

通过pg_relation_filenode()将oid转化为relfilenode,其结果永远是正确的,比从pg_class中查询更为准确。
因此,针对这位同学的需求,既然已经从磁盘文件中找到对应占用空间大的oid,我们就可以通过以下语句找到对应的表。

select oid,pg_relation_filenode(oid),relname from pg_class where pg_relation_filenode(oid)=...

正常情况下,通过以上命令就能找到对应的表了。
不过,如果之前系统发生了异常情况,比如在大量写入数据时突然系统宕机,那么有可能导致数据文件残留的情况。针对于这种情况,我们可以通过查看对应产生文件的时间是否是异常发生的时间,一般情况下能对应上。针对这种情况,这样的文件可以直接删除即可,当然,为了保险起见,我们可以备份到一个别的目录。


http://www.niftyadmin.cn/n/5014609.html

相关文章

测试岗位的不足和缺点-思考

软件测试岗位在实际工作中可能会面临一些不足和缺点,以下是一些常见的问题: 高压力、高强度的工作:软件测试工作往往需要在项目截止日期前完成测试,这可能会带来巨大的压力。同时,如果开发团队在项目中进行了大量的更改…

孙哥Spring源码第18集

第18集 refresh()-invokeBeanFactoryPostProcessor-二-ConfigurationClassPostProcessor的处理逻辑 【视频来源于:B站up主孙帅suns Spring源码视频】【微信号:suns45】 1、为什么PropertySource先处理? 因为Conponent A在处理的过程中 要把…

LeetCode 48题: 旋转图像

题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]]…

CYEZ 模拟赛 3

A 萌萌题&#xff0c;但是看错题。 代码 B 典典题。 二分平均值 x x x。统计均值小于 x x x 的方案数&#xff0c;每个数减去 x x x 后即统计多少个区间和 < 0 <0 <0。容易发现是个二维偏序问题&#xff0c;归并排序统计即可。 代码 C 典典题。 n ≤ 1500…

【微众银行秋招】230903三、平均值 <前缀和>

平均值 小明有一个数组。他挑选了一个有理数u/v&#xff0c;现在他想知道这个数组有多少个子区间的平均值恰好等于u/v。数组的子区间即是数组中连续的一段区间&#xff0c;如数组[4,2,6]有6个子区间[4],[2],[6],[4,2],[2,6],[4,2,6]。 输入描述 第一行有三个整数 n,u,v(1<…

多路转接之PollEpoll

文章目录 Pollpoll函数接口poll的优缺点poll示例Util.hpp(所用到的函数方法)Server.hppServer.cclog.hpp(日志) Epollepoll的相关系统调用epoll_createepoll_ctlepoll_wait epoll工作原理epoll的优点epoll工作方式对比LT和ETepoll服务器(LT模式)示例Util.hpp(需要调用的函数)Se…

(其他) 剑指 Offer 67. 把字符串转换成整数 ——【Leetcode每日一题】

❓ 剑指 Offer 67. 把字符串转换成整数 难度&#xff1a;中等 写一个函数 StrToInt&#xff0c;实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 首先&#xff0c;该函数会根据需要丢弃无用的开头空格字符&#xff0c;直到寻找到第一个非空格的字符为…

RTI connext 初级入门

1. Before You Get Started — RTI Connext DDS Getting Started documentation 2. Introduction to Publish/Subscribe — RTI Connext DDS Getting Started documentation 3. Introduction to Data Types — RTI Connext DDS Getting Started documentation 4. Introducti…