autovacuum调用analyze更新规划器统计信息

PostgreSQL查询计划器依靠有关表内容的统计信息来生成良好的查询计划。这些统计信息由ANALYZE命令收集,该命令可以自行调用,也可以作为VACUUM. 拥有相当准确的统计数据很重要,否则计划选择不当可能会降低数据库性能。

如果启用了 autovacuum 守护程序,它将ANALYZE在表的内容发生充分变化时自动发出命令。但是,管理员可能更喜欢依赖手动调度的ANALYZE操作,特别是如果已知表上的更新活动不会影响“有趣”列的统计信息时。守护进程ANALYZE严格根据插入或更新的行数进行调度;它不知道这是否会导致有意义的统计变化。

分区中更改的元组和继承子项不会触发对父表的分析。如果父表为空或很少更改,则可能永远不会被 autovacuum 处理,并且不会收集整个继承树的统计信息。必须ANALYZE手动在父表上运行,以保持统计信息最新。

与清理空间恢复一样,频繁更新统计信息对于频繁更新的表比对很少更新的表更有用。但是即使对于一个频繁更新的表,如果数据的统计分布没有太大变化,也可能不需要更新统计信息。一个简单的经验法则是考虑表中列的最小值和最大值的变化量。例如,timestamp包含行更新时间的列将随着行的添加和更新而不断增加最大值;这样的列可能需要比包含在网站上访问的页面的 URL 的列更频繁的统计信息更新。URL 列可能会经常收到更改,但其值的统计分布可能会相对缓慢地更改。

可以ANALYZE在特定表甚至表的特定列上运行,因此如果您的应用程序需要,可以灵活地比其他更频繁地更新某些统计信息。然而,在实践中,通常最好只分析整个数据库,因为它是一种快速操作。ANALYZE使用表格行的统计随机抽样,而不是读取每一行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值