为了避免ibtmp1文件无止境的暴涨导致再次出现此情况,可以修改参数,限制其文件最大尺寸。如果文件大小达到上限时,需要生成临时表的SQL无法被执行(一般这种SQL效率也比较低,可借此机会进行优化)
解决办法
1、修改 my.cnf 配置文件:
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G
# 12M代表文件初始大小,5G代表最大size
2、重启mysql服务,重启后查看是否生效
systemctl restart mysqld
可能导致ibtmp1文件会暴涨的情况:1.用到临时表,当EXPLAIN 查看执行计划结果的 Extra 列中,如果包含 Using Temporary就表示会用到临时表。
2.GROUP BY无索引字段或GROUP BY + ORDER BY的子句字段不一样时。
3.order by与distinct共用,其中distinct与order by里的字段不一致(主键字段除外)。
4.insert into table1 select xxx from table2。
本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!