我的数据库Postgresql 11有问题。
。

autovacuum = on
vacuum_cost_delay = 0
vacuum_cost_page_hit = 0
vacuum_cost_page_miss = 1
vacuum_cost_page_dirty = 1
vacuum_cost_limit = 10000
autovacuum_max_workers = 3
autovacuum_naptime = 1s
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
autovacuum_vacuum_scale_factor = 0
autovacuum_analyze_scale_factor = 0.00
autovacuum_vacuum_cost_delay = 5ms
autovacuum_vacuum_cost_limit = -1
它的接近600+k元组每次使用真空配置。
问题:基地每天增长7-10千兆字节!真空后全碱尺寸为69 GB,但一周后需要110~115 GB。那么,如何更改配置以使数据库停止增长呢?我不能提高真空工人和autovacuum_cost_limit是最大值。我想从某人那里学到一些经验,因为我只是个初级的DevOps)
发布于 2021-11-03 14:19:16
将所有这些参数重置回默认设置,并更改有关表的成本延迟:
ALTER TABLE large SET (autovacuum_vacuum_cost_delay = 0);这使得自动吸尘器在那张桌子上越快越好。
此外,将maintenance_work_mem设置为最佳的自真空性能。
发布于 2021-11-10 19:01:48
这些是什么样的指数?假设最常见(btree):
清除索引并不会缩小索引,它只会腾出空间用于内部重用。空间重用受到严格限制。只有当新的元组自然属于该页(给定其他剩余元组的值已经存在)或如果页面完全为空时,才能重用空间,则整个页面可以标记为可用链接到树中的其他位置。
因此,例如,如果您有一个用户表,该表从未从"last_logged_on“中删除,并且在/以时间戳列”“开头有索引,那么当您的用户退出时,他们将永远不会更新该列,而所有以前(仍处于活动状态)邻居都将移至其他索引页。最终,您将建立一长串的索引页,这是前客户最后一次登录,每个索引页只有一个或几个客户。(任何包含零个前客户的索引页都应该已经被分离和重用)。
另一个例子是,如果您有许多临时客户最终会被删除,并且只有一小部分长期存在,那么如果他们的customer_id上的索引是由序列填充的,那么您就可以得到同样的结果。每一位长期客户最终都可能自己出现在索引页面上,因为这些临时用户最终会被删除。
这些问题通常发展得很慢,可以通过一个罕见的重新索引(现在可以(>= v12)并发完成)来解决,这意味着不需要从表中锁定普通的INSERT/UPDATE/DELETE )。
https://stackoverflow.com/questions/69826384
复制相似问题