首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动真空postgresql 11,具有大表和许多更新

自动真空postgresql 11,具有大表和许多更新
EN

Stack Overflow用户
提问于 2021-11-03 14:11:40
回答 2查看 815关注 0票数 0

我的数据库Postgresql 11有问题。

  1. I有很多行的数据库-- 10+百万。
  2. --我分析了我最大的几张桌子(打开的图片):左边是一天,右边是第二天(24小时)

  • 60+百万更新和30+百万每天更新

  1. I使用自动真空:

代码语言:javascript
复制
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

  1. I有死元组的监测:

它的接近600+k元组每次使用真空配置。

问题:基地每天增长7-10千兆字节!真空后全碱尺寸为69 GB,但一周后需要110~115 GB。那么,如何更改配置以使数据库停止增长呢?我不能提高真空工人和autovacuum_cost_limit是最大值。我想从某人那里学到一些经验,因为我只是个初级的DevOps)

EN

回答 2

Stack Overflow用户

发布于 2021-11-03 14:19:16

将所有这些参数重置回默认设置,并更改有关表的成本延迟:

代码语言:javascript
复制
ALTER TABLE large SET (autovacuum_vacuum_cost_delay = 0);

这使得自动吸尘器在那张桌子上越快越好。

此外,将maintenance_work_mem设置为最佳的自真空性能。

票数 2
EN

Stack Overflow用户

发布于 2021-11-10 19:01:48

这些是什么样的指数?假设最常见(btree):

清除索引并不会缩小索引,它只会腾出空间用于内部重用。空间重用受到严格限制。只有当新的元组自然属于该页(给定其他剩余元组的值已经存在)或如果页面完全为空时,才能重用空间,则整个页面可以标记为可用链接到树中的其他位置。

因此,例如,如果您有一个用户表,该表从未从"last_logged_on“中删除,并且在/以时间戳列”“开头有索引,那么当您的用户退出时,他们将永远不会更新该列,而所有以前(仍处于活动状态)邻居都将移至其他索引页。最终,您将建立一长串的索引页,这是前客户最后一次登录,每个索引页只有一个或几个客户。(任何包含零个前客户的索引页都应该已经被分离和重用)。

另一个例子是,如果您有许多临时客户最终会被删除,并且只有一小部分长期存在,那么如果他们的customer_id上的索引是由序列填充的,那么您就可以得到同样的结果。每一位长期客户最终都可能自己出现在索引页面上,因为这些临时用户最终会被删除。

这些问题通常发展得很慢,可以通过一个罕见的重新索引(现在可以(>= v12)并发完成)来解决,这意味着不需要从表中锁定普通的INSERT/UPDATE/DELETE )。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69826384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档