暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分析ANALYZE对default_statistics_target的影响

上周,我收到了在某个大型数据库集群上增加PostgreSQL配置参数default_statistics_target的请求。开发人员填写了一张票,在集群级别将default_statistics_target参数值增加到10,000,因为其中一个查询已开始完全顺序扫描而不是索引扫描。

 

默认情况下,Postges集群将default_statistics_target设置为100,但您最多可以设置10,000。这个参数定义了在最常用值列表中存储多少个值,并且还指示了通过ANALYZE进程检查的行数。
 
出于好奇,我深入研究了Postgres ANALYZE代码,来寻找基于default_statistics_target值的时候有多少行正在被ANALYZE扫描。正如您在1763行看到的那样,ANALYZE检查的行数取决于300乘以default_statistics_target。
 
    1763  stats->minrows = 300 * attr->attstattarget;
     
    如果default_statistics_target值为100,则ANALYZE最多可以扫描300 * 100 = 30,000行以收集准确的统计信息。
     
    根据Postgres文档的ANALYZE章节,如果在集群级别盲目地增加这个值,可能会损害一些简单查询,这是因为将default_statistics_target值设置为最大值时,查询规划时间会显著增加,这最终会降低简单查询的性能。我的下一个逻辑步骤是通过慢查询找出特定表的default_statistics_target的最优值。我可能会一开始就将值增加到1000,并根据EXPLAIN ANALYZE查询结果增加/减少值。
     
    当您尝试为数据库服务器调优default_statistics_target参数值时,希望这一发现会有所帮助。如果您有其他意见或想法来调整设置,请让我知道。谢谢!

    I Love PG

    PostgreSQLPG2017PostgreSQLPGPostgreSQLPostgreSQL


    技术文章精彩回顾




    PostgreSQL学习的九层宝塔
    PostgreSQL职业发展与学习攻略
    2019,年度数据库舍 PostgreSQL 其谁?
    Postgres是最好的开源软件
    PostgreSQL是世界上最好的数据库
    从Oracle迁移到PostgreSQL的十大理由
    从“非主流”到“潮流”,开源早已值得拥有

    PG活动精彩回顾




    创建PG全球生态!PostgresConf.CN2019大会盛大召开
    首站起航!2019“让PG‘象’前行”上海站成功举行
    走进蓉城丨2019“让PG‘象’前行”成都站成功举行
    中国PG象牙塔计划发布,首批合作高校授牌仪式在天津举行
    群英论道聚北京,共话PostgreSQL
    相聚巴厘岛| PG Conf.Asia 2019  DAY0、DAY1简报
    相知巴厘岛| PG Conf.Asia 2019 DAY2简报
    独家|硅谷Postgres大会简报
    直播回顾 | Bruce Momjian:原生分布式将在PG 14版本发布

    PG培训认证精彩回顾




    中国首批PGCA认证考试圆满结束,203位考生成功获得认证!
    中国第二批PGCA认证考试圆满结束,115位考生喜获认证!
    重要通知:三方共建,中国PostgreSQL认证权威升级!
    近500人参与!首次PGCE中级、第三批次PGCA初级认证考试落幕!
    2020年首批 | 中国PostgreSQL初级认证考试圆满结束
    一分耕耘一分收获,第五批次PostgreSQL认证考试成绩公布

    文章转载自开源软件联盟PostgreSQL分会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论