最初的问题始于雇主雇用我担任报表开发人员,但在工作的第一天就给了我DBA任务。因此,请容忍我对DBA技能的了解不足或不了解。
关于DB。它是PostgreSQL Amazon RDS。 DB大小为127 GB(以及当前的关注点/问题)。
对于一个3年(约一个月)肯定没有那么多数据记录的公司来说,这个规模太大了。
更深入地研究后,我能够查明几张表,这些表几乎占用了127GB的90%。
其中一个表称为表X,其大小为23GB(外部大小为14GB)。记录数仅为366541。具有36列,其中只有5种为字符串类型,其余为整数,布尔值,串行和时间戳。
我想到的一个想法是,表中保存的实际文本是表格大小的原因。
检查数据后,我发现为此记录重复的所有文本已经作为单个记录存储在不同的表中。因此,为了检验我的理论,我决定将字符串数据分成FK列,并检查这是否会引起大小差异。
但是在对该表进行结构和数据克隆之后,测试数据库上的新表要小得多,为200 MB。我比较了所有列类型,数据,计数,服务器参数,所有内容都是相同的。唯一的区别是测试表不再具有FK。列及其数据存在,但列本身未经过FK编辑(引用)。
我想念什么?是什么导致桌子这么大?