4

我有一个非常更新的重表。问题是表增长了很多,因为 autovacuum 无法赶上。autovacuum 每 2 分钟启动一次,因此它正在运行文件。

我有一个应用程序每 60-70 秒进行 50k 更新(和一些插入)。

我被迫每周做 CLUSTER,这不是 IMO 的最佳解决方案。我的 autovacuum 设置如下(加上相关):

maintenance_work_mem = 2GB
autovacuum_vacuum_cost_limit = 10000
autovacuum_naptime = 10
autovacuum_max_workers = 5
autovacuum_vacuum_cost_delay = 10ms
vacuum_cost_limit = 1000
autovacuum_vacuum_scale_factor=0.1 # this is set only for this table

这是自动清理日志:

2018-01-02 12:47:40.212 UTC [2289] 日志:表“mydb.public.sla”的自动真空:索引扫描:1 页:0 已删除,21853 保留,1 由于引脚而跳过,0 跳过冻结元组:已删除 28592,保留 884848,38501 已死但尚未可移动缓冲区使用:240395 次命中,15086 次未命中,22314 脏平均读取速率:29.918 MB/s,平均写入速率:44.252 MB/s 系统使用率:CPU 0.47s/2.60 u 秒经过 3.93 秒

在我看来,29 MB/s 太低了,考虑到我的硬件还不错

我有英特尔 NVMe 设备,我的 I/O 似乎没有饱和。

Postgresql 版本:9.6
CPU:双 Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz

任何想法如何改善这一点?

4

0 回答 0