在大小十亿行的Postgres表上应用集群是否可以提高性能?
我试图找出应用群集操作是否会改善非常大的表的查询时间。
答案 0 :(得分:0)
https://www.postgresql.org/docs/current/static/sql-cluster.html
如果您在表格中随机访问单行, 表中数据的实际顺序并不重要。但是,如果 您倾向于访问某些数据而不是其他数据,并且有一个索引 将它们组合在一起,您将受益于使用CLUSTER。如果你 从表或单个请求一系列索引值 具有多个匹配行的索引值,CLUSTER将有所帮助 因为一旦索引标识第一行的表页面 匹配,匹配的所有其他行可能已经在 相同的表页,因此您可以节省磁盘访问并加快查询速度。
正如您所看到的,群集将改善或不改善性能,具体取决于您查询表的方式,而不是查询表的大小。十亿或百万 - 如果您使用您对表进行聚类的索引并且您倾向于更频繁地使用某些部分数据,那么它将受益。而且您没有非常密集地更改数据:
当一个表被聚类时,它会根据它进行物理重新排序 索引信息。聚类是一次性操作:表时 随后更新,更改不会群集。也就是说,没有 尝试根据索引存储新行或更新的行 订购。 (如果有人愿意,可以通过签发来定期重新集结 再次命令。