gpt4 book ai didi

performance - PostgreSQL 在包含数组和大量更新的大表上运行缓慢

转载 作者:行者123 更新时间:2023-11-29 11:15:14 25 4
gpt4 key购买 nike

我有一个非常大的表(20M 条记录),它有一个 3 列索引和一个数组列。数组列每天为所有行更新(通过附加新值)。也有插入,但没有更新那么多。

数组中的数据表示对应于三个键的每日测量值,如下所示:[[date_id_1, my_value_for_date_1], [date_id_2, my_value_for_date_2]]。它用于绘制这些每日值的图表。假设我想随着时间的推移可视化键 (a、b、c) 的值,我执行 SELECT values FROM t WHERE a = my_a AND b = my_b AND c = my_c。然后我使用 values 数组绘制图形。

随着时间的推移,更新的性能(每天大量发生一次)已经大大恶化。

使用 PostgreSQL 8.3.8。

您能告诉我在哪里寻找解决方案吗?它可以是从调整 postgres 中的一些参数到甚至移动到另一个数据库的任何东西(我想非关系数据库会更适合这个特定的表,但我没有太多经验)。

最佳答案

我会查看表格的 FILLFACTOR。默认情况下它设置为 100,您可以将它降低到 70(开始)。在此之后,您必须执行 VACUUM FULL 来重建表。

ALTER TABLE tablename SET (FILLFACTOR = 70);
VACUUM FULL tablename;
REINDEX TABLE tablename;

这使 UPDATE 有机会将行的更新副本放置在与原始页面相同的页面上,这比将其放置在不同的页面上效率更高。或者,如果您的数据库已经从许多以前的更新中变得有些碎片化,那么它可能已经足够备用了。现在您的数据库也可以选择执行 HOT updates ,假设您正在更新的列不涉及任何索引。

关于performance - PostgreSQL 在包含数组和大量更新的大表上运行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3100072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com