怎么理解PostgreSQL中的参数autovacuum_max_workers

这篇文章主要介绍“怎么理解PostgreSQL中的参数autovacuum_max_workers”,在日常操作中,相信很多人在怎么理解PostgreSQL中的参数autovacuum_max_workers问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么理解PostgreSQL中的参数autovacuum_max_workers”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

创新互联-专业网站定制、快速模板网站建设、高性价比麦盖提网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式麦盖提网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖麦盖提地区。费用合理售后完善,十余年实体公司更值得信赖。

概览

PG的MVCC要求“过期”的数据不能马上被物理清除,而是标记为dead rows,这些dead rows后续会通过vacuuming过程清理。
vacuuming通过以下方式让数据库保持“健康”:
1.标记dead rows可用于存储新数据,这样可以避免不必要的磁盘浪费以及可以跳过dead rows以提升顺序扫描的性能;
2.更新vm(用于跟踪过期或已废弃的数据,反应在pages上)。这可以提升index-only scans的性能;
3.避免出现事务ID回卷而导致的数据库宕机。
PG提供了autovacuum机制,通过周期性的运行ANALYZE来收集最近频繁更新的数据表统计信息,基于这些统计信息autovacuum进行调度清理dead rows。

Worker个数

PG提供了配置参数autovacuum_max_workers用于配置autovacuum worker的个数,从直观的感觉来看,提升该参数意味着有更多的worker进程,可以有效的提升autovacuum的吞吐,但实际上由于autovacuum_vacuum_cost_limit参数的限制,单纯的提升autovacuum_max_workers并没有什么效果。
由于autovacuum_vacuum_cost_limit对成本的限制是全局的,也就是说该参数控制了全局的worker可达到的成本上限,就算提高了autovacuum_vacuum_cost_limit,吞吐量也不会有提升。打个比方,启用多线程往文件系统中写文件,但总的吞吐限制为10MB/s,每个线程的吞吐最多只能是(10MB/线程数)/s也就意味着不管你启用多少个线程,最高的吞吐也只能是10MB/s,除了增加线程数(autovacuum_max_workers)还需要增加总的吞吐限制(autovacuum_vacuum_cost_limit)。

个性化解决方案

PG提供了面向单个表的个性化autovacuum解决方案,可以在表级上设置autovacuum_vacuum_cost_limit、autovacuum_vacuum_cost_delay等参数。表上的autovacuum_vacuum_cost_limit参数不纳入到全局的统计数字中。

[local:/data/run/pg12]:5120 pg12@testdb=# create table t(id int);
CREATE TABLE
[local:/data/run/pg12]:5120 pg12@testdb=# ALTER TABLE t SET (autovacuum_vacuum_cost_limit = 1000);
ALTER TABLE
[local:/data/run/pg12]:5120 pg12@testdb=# ALTER TABLE t SET (autovacuum_vacuum_cost_delay = 10);
ALTER TABLE
[local:/data/run/pg12]:5120 pg12@testdb=#

到此,关于“怎么理解PostgreSQL中的参数autovacuum_max_workers”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!

网站名称:怎么理解PostgreSQL中的参数autovacuum_max_workers
浏览路径:https://www.cdcxhl.com/article34/iedjse.html

成都网站建设公司_创新互联,为您提供云服务器外贸建站全网营销推广微信公众号网站设计响应式网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站建设网站维护公司