MySQL统计信息不准确导致索引失效

1.统计信息不准确的影响

统计信息不准确一般会导致MySQL优化器无法选择正确的索引,从而导致优化器选择错误的索引或者不走索引,引起索引失效,导致大量慢查询

2.什么情况下会导致统计信息不准确?

一般来说,大体分为以下两种情况:

  1. 统计信息未及时更新,不正确的统计信息导致索引失效。
  2. 表中碎片过多,导致Cardinality不准确,计算错误。

下面就两种场景进行细谈:

统计信息未及时更新

在这个话题之前先看一些参数:
FOR MySQL 5.7:
一般来说统计信息由下面的参数控制:
innodb_stats_persistent:控制统计信息是否持久化,默认打开。
innodb_stats_auto_recalc: 控制表多少比例的行被修改后自动更新统计信息,默认是10%,默认打开。
innodb_stats_persistent_sample_pages: 开启统计信息持久化之后索引统计时采样的页面数,默认20个页面,太大会导致采样时间过久影响性能。
innodb_stats_method: 统计信息在遇到NULL值如何进行处理,默认NULL值相等即nulls_equal。
另外还有两张表可以看到统计信息的详细:
mysql.innodb_index_statsmysql.innodb_table_stats 这两张表会存储一些详细信息,表结构如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渔不是鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值