MySQL 5.6清除information_schema.tables缓存的替代方案(无需升级)
在MySQL 5.6中清除information_schema.tables缓存的替代方法
因为information_schema_stats_expiry是MySQL 5.7及以上版本才引入的参数,所以在5.6版本执行这条语句自然无效。不升级版本的话,你可以试试以下几种可行方法:
手动刷新指定表的统计信息
使用ANALYZE TABLE语句强制更新目标表的统计数据,执行后information_schema.tables中的对应缓存会同步刷新。语法示例:ANALYZE TABLE your_table_name;如果需要批量处理多个表,可以写脚本遍历目标表名,逐个执行该语句即可。
开启InnoDB统计信息自动更新(针对InnoDB表)
先检查innodb_stats_auto_recalc参数状态,默认是开启的;如果之前被设置为OFF,执行以下语句开启自动更新:SET GLOBAL innodb_stats_auto_recalc = ON;开启后,当表的数据变更量超过10%时,InnoDB会自动重新计算统计信息,间接刷新
information_schema里的缓存。不过这个是自动触发机制,无法立即生效,若需要立刻刷新还是得用ANALYZE TABLE。补充说明
ANALYZE TABLE在InnoDB引擎下属于在线操作,不会长时间阻塞业务,但建议在业务低峰期执行,避免产生短暂性能影响。- 若使用MyISAM引擎,
ANALYZE TABLE同样有效,MyISAM的统计信息默认依赖手动更新,该语句是刷新缓存的核心方式。
内容的提问来源于stack exchange,提问作者user3653474
相关产品推荐
相关产品推荐

