ibz*_*ibz 10 postgresql optimization performance
我有一个非常大的表(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调整一些参数到甚至移动到另一个数据库(我猜一个非关系数据库更适合这个特定的表,但我没有太多的经验).
Fra*_*ens 24
我会看一下桌子上的FILLFACTOR.默认情况下,它设置为100,您可以将其降低到70(开始时).在此之后,您必须执行VACUUM FULL来重建表.
ALTER TABLE tablename SET (FILLFACTOR = 70);
VACUUM FULL tablename;
REINDEX TABLE tablename;
Run Code Online (Sandbox Code Playgroud)
这使UPDATE有机会将行的更新副本放在与原始页面相同的页面上,这比将其放在不同页面上更有效.或者,如果您的数据库已经从之前的许多更新中分散了一些,那么它可能已经足够了.现在,您的数据库还可以选择执行HOT更新,假设您要更新的列不是任何索引中涉及的列.
| 归档时间: |
|
| 查看次数: |
14098 次 |
| 最近记录: |