写点什么

【YashanDB 知识库】表收集统计信息默认阈值引起 SQL 执行效率差

作者:YashanDB
  • 2024-07-12
    广东
  • 本文字数:372 字

    阅读完需:约 1 分钟

【问题分类】性能优化

【关键字】统计信息,阈值,执行计划

【问题描述】表新增 87w 数据自动收集统计信息任务没有启动导致 SQL 执行计划变差

【问题原因分析】

  • CUS_REGISTER_READ 数据总量是 18374074,插入 81 万,统计信息失效的阈值是 insert+delete+update 超过所有行数的 10%,没有达到统计信息收集的阈值,不会做收集。

  • 统计信息没有失效,为什么插入 81 万的数据前后给出的执行计划不一样?由于数据库缺乏查看历史执行计划的视图,该问题并不能精准回复。

【解决/规避方法】

  • 对于大表需要合理设置统计信息收集的阈值

  • 获取 SQL 执行计划历史变更功能,已提相关需求

新引入需要注意的问题:GATHER_DATABASE_STATS('GATHER AUTO', 0, 8, 'FOR ALL COLUMNS SIZE AUTO', 'AUTO', TRUE, TRUE)倒数第3个参数是AUTO,在客户场景分区表(100+个分区),会比较慢。
复制代码

【影响范围】严重降低 SQL 执行效率

【修复版本】23.2 补丁版本

用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
【YashanDB知识库】表收集统计信息默认阈值引起SQL执行效率差_yashandb_YashanDB_InfoQ写作社区