mysql升级后如何检查索引状态_mysql索引优化步骤-mysql教程

MySQL升级后必须手动执行ANALYZE TABLE更新统计信息,否则EXPLAIN的rows值失真;需核验索引定义一致性、前缀长度、生成列索引有效性,并利用performance_schema识别僵尸索引,结合EXPLAIN FORMAT=TREE验证优化器行为变化。

升级后立刻检查 INFORMATION_SCHEMA.STATISTICS 是否同步更新

MySQL 升级(尤其是跨大版本,如 5.7 → 8.0)后,INFORMATION_SCHEMA.STATISTICS 中的索引统计信息可能未自动刷新,导致 EXPLAIN 显示的 rows 严重失真,误判索引有效性。

  • 执行 ANALYZE TABLE table_name; 强制更新统计信息,不是可选操作,是必须步骤
  • 对所有高频查询表批量执行: SELECT CONCAT('ANALYZE TABLE ', table_schema, '.', table_name, ';') FROM information_schema.tables WHERE table_schema NOT IN ('mysql','information_schema','performance_schema','sys');,再复制结果运行
  • 注意:8.0+ 默认启用 innodb_stats_auto_recalc=ON,但首次升级后仍需手动触发一次,否则旧统计值可能残留

用 SHOW INDEX 和 INFORMATION_SCHEMA.KEY_COLUMN_USAGE 核验索引定义一致性

升级过程本身不删除索引,但某些场景下索引会“失效”——比如列字符集变更、前缀长度超限、或使用了被弃用的语法(如 FULLTEXT 在非 utf8mb4 下行为异常)。

  • SHOW INDEX FROM table_name; 看 Sub_part 是否为 NULL 或数值异常(如 8.0 中 VARCHAR(255) 字段建了 INDEX(col(1000)) 会静默截断,实际生效前缀可能是 767 或 3072,取决于 innodb_large_prefix 和行格式)
  • 对比升级前后 SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = 'db' AND TABLE_NAME = 't'; 的 COLUMN_NAME 和 ORDINAL_POSITION,确认复合索引字段顺序没被意外重排
  • 特别检查含生成列(generated column)的索引:8.0.23+ 对 STORED 列索引支持更严格,若升级后查询变慢,先查该索引是否仍在 SHOW CREATE TABLE 输出中

通过 performance_schema.table_io_waits_summary_by_index_usage 找“僵尸索引”

升级后是清理低效索引的黄金窗口——新版本的 performance_schema 表提供了更精确的索引使用统计,比旧版 Handler_read_* 状态变量更可靠。

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » mysql升级后如何检查索引状态_mysql索引优化步骤-mysql教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3993029+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3993030+
  • 本周更新: 0+
  • 最后更新: 2026-03-16