MySQL -- innodb中cardinality是如何统计的
2017-09-11 16:41 abce 阅读(1315) 评论(0) 编辑 收藏 举报cardinality是放在mysql存储引擎层进行的。采用的是采样取值。
在innodb存储引擎中,cardinality统计信息的更新发生在两个操作中:insert和update
更新策略为:
-表中1/16的数据发生过变化
-stat_modified_counter>2000 000 000 (stat_modified_counter是innodb存储引擎中的一个计数器)
默认Innodb存储引擎对8个叶子节点进行采样。受参数innodb_stats_sample_pages影响。
当执行语句analyze table、show table status、show index、访问information_schema.tables、访问information_schema.statistics时都会导致innodb存储引擎重新计算cardinality的值(对应的参数请查阅文档)。如果表中数据大,且存在多个辅助索引,以上操作可能会很慢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)