DDD*_*DDD 5 postgresql maintenance autovacuum amazon-rds
对于以下表来说,什么是好的自动真空设置(建议):
高写表插入负载
一天内插入 30-10,000 次。该表可以在没有负载的情况下闲置数周,但每周至少可以进行 3 次突发插入。
高更新表
它使用分区表数据,单次插入的大小是我的表大小的 3-8 倍。
高写表
单行仅更新一次,但一天内会突然更新唯一键,并且需要更新,可能是 30-10,000 个键更新。
高读表
大多数表都是高读取表,为我的数据仓库设置填充因子 80,容纳来自高更新表计算的表
我的删除每月进行一次并分批进行。与密钥相关的所有内容都会被删除或作为备份移动。
目前,对于高更新表,我的填充因子设置为 10-20 。
使用 TDS db.t3.large,但我在流量较低时切换到 db.t3.micro。
另外,设置填充因子真的很低会减慢选择速度吗?
这个问题太宽泛,但这里有一些有关配置 autovacuum 的提示:
对于接收批量插入的表,请VACUUM随后运行显式操作或使用 PostgreSQL v13。
对于具有多次更新的表,如果没有对更新的列建立索引fillfactor,则 a为 70 到 90(取决于行大小)是一件好事。10 或 20 简直就是对空间的疯狂浪费。
对于只读表,无需关心 autovacuum。
对于批量删除,您无能为力。如果您可以使用分区,那么这种痛苦可能会完全消失。
当然低fillfactor会对查询性能产生负面影响;这就是您为更有效的数据修改所付出的代价:
对于顺序扫描,影响是显而易见的:您也必须读取所有空白空间。
对于只读取单行的索引扫描,不会有性能影响。
fillfactor读取多行的索引扫描位于中间的某个位置,因为如果较低,它们将不得不读取更多块,因为行将分布在更多块上。
不要忘记对缓存效率的影响:如果您的块主要由空气组成,则用于缓存的 RAM 也将主要包含死空间。
| 归档时间: |
|
| 查看次数: |
1985 次 |
| 最近记录: |