如何减小大型Postgresql表的大小

问题描述 投票:2回答:1

我有一个“冻结”的postgresql表,即没有新数据输入其中。该表严格用于阅读目的。该表包含约1700万条记录。该表有130列,可以用多种不同的方式查询。为了使查询更快,我为可以使用的过滤器的所有组合创建了索引。所以我桌上总共有大约265个索引。每个索引约为1.1 GB。这使得表的总大小约为265 GB。我也把桌子弄干净了。

问题

  • 是否有办法进一步降低此表的磁盘使用率?
  • 有没有更好的方法来处理从未输入任何数据的“冻结”表的查询?
postgresql indexing diskspace
1个回答
0
投票

如果表或索引过大,则VACUUM FULL tablename可能会缩小它们。但是,如果他们不肿,那将毫无用处。这不是一个良性操作,它将锁定表一段时间(需要重建数百个索引,可能需要很长时间),并生成大量的IO和WAL,最后一个对于操作特别麻烦。副本。因此,我将在非生产型克隆上对其进行测试,以查看其实际上是否可以收缩,并查看需要声明的维护时间。

除此之外,在选择索引时要更加明智。您如何获得“可以使用的过滤器的所有组合”列表的?是通过检查您的源代码,还是只是一个接一个地解决慢速查询,直到用尽慢速查询?也许您可以查看间隔几天拍摄的pg_stat_user_indexes快照,以查看它们是否全部在使用。

这些主要是两列索引吗?

© www.soinside.com 2019 - 2024. All rights reserved.