postgresql-9.5 - postgresql相同表的大小不同
问题描述
我最初的问题始于雇主聘请我作为报告开发人员,但在工作的第一天就给了我 DBA 任务。所以,请容忍我对 DBA 技能的了解不足甚至不存在。
那么关于数据库。它是 PostgreSQL Amazon RDS。数据库大小为 127 GB(和我当前的关注/问题)。
对于一个 3 年(+几个月)年肯定没有那么多数据记录的公司来说,这个规模太大了。
在深入研究之后,我能够确定几张表占用了 127GB 的几乎高达 90% 的空间。
其中一张表可以称之为表 X,大小为 23GB(外部大小为 14GB)。记录数仅为 366541。有 36 列,其中只有 5 列是字符串类型,其余为整数、布尔值、串行和时间戳。
我想到的一个想法是保存在列中的实际文本是表格大小的一个原因。
在检查数据后,我看到所有为这些记录重复的文本已经作为单个记录存储在不同的表中。因此,为了测试我的理论,我决定将这个字符串数据分解为 FK 列并检查这是否会导致大小差异。
但是在这个表的结构和数据克隆之后,测试数据库上的新表要小得多,只有 200 MB。我比较了所有列类型,数据,它的计数,服务器参数,一切都是一样的。唯一的区别是测试表不再有 FK。列及其数据在那里,但列本身不是 FK-ed(引用)。
我错过了什么?是什么导致桌子这么大?
解决方案
推荐阅读
- laravel - 使用 Query 或 Eloquent (Laravel) 时返回其他值
- php - 我的 Laravel 8 应用程序中出现此路由相关错误的原因是什么?
- excel - 比较 VBA 中的负值以产生通过和失败的结果
- nestjs - 如何在nestJs中使用护照本地策略对多个实体进行身份验证?
- python-3.x - wagtailuserbar 在 nginx 生产服务器上给出错误
- sml - (标准 ML)有没有办法直接比较列表的元素?
- typescript - 函数返回类型取决于可选参数
- amazon-web-services - AWS CloudWatch Event 仅运行一个目标
- reactjs - 重新渲染后react-draggable保存元素的位置
- r - spark_write_csv 不再起作用(使用 Sparklyr)