首页 > 解决方案 > postgresql相同表的大小不同

问题描述

我最初的问题始于雇主聘请我作为报告开发人员,但在工作的第一天就给了我 DBA 任务。所以,请容忍我对 DBA 技能的了解不足甚至不存在。

那么关于数据库。它是 PostgreSQL Amazon RDS。数据库大小为 127 GB(和我当前的关注/问题)。

对于一个 3 年(+几个月)年肯定没有那么多数据记录的公司来说,这个规模太大了。

在深入研究之后,我能够确定几张表占用了 127GB 的几乎高达 90% 的空间。

其中一张表可以称之为表 X,大小为 23GB(外部大小为 14GB)。记录数仅为 366541。有 36 列,其中只有 5 列是字符串类型,其余为整数、布尔值、串行和时间戳。

我想到的一个想法是保存在列中的实际文本是表格大小的一个原因。

在检查数据后,我看到所有为这些记录重复的文本已经作为单个记录存储在不同的表中。因此,为了测试我的理论,我决定将这个字符串数据分解为 FK 列并检查这是否会导致大小差异。

但是在这个表的结构和数据克隆之后,测试数据库上的新表要小得多,只有 200 MB。我比较了所有列类型,数据,它的计数,服务器参数,一切都是一样的。唯一的区别是测试表不再有 FK。列及其数据在那里,但列本身不是 FK-ed(引用)。

我错过了什么?是什么导致桌子这么大?

标签: postgresql-9.5

解决方案


推荐阅读