MySQL的ibtmp1文件太大引起磁盘空间爆满

1. 现象

MySQL测试服务器磁盘空间不足,想着前两天才关注过磁盘空间,还有一半的可用空间,突然爆满不合乎常理,进入数据MySQL数据目录,看到文件ibtmp1占了一半以上的空间

2. 解决

2.1 关闭数据库实例:

shutdown;   #  因本实例为MySQL5.7  可以直接在SQL命令行中shutdown关闭

2.2 修改my.cnf配置文件

为了避免ibtmp1文件无止境的暴涨导致再次出现此情况,可以修改参数,限制其文件最大尺寸。

如果文件大小达到上限时,需要生成临时表的SQL无法被执行(一般这种SQL效率也比较低,可借此机会进行优化)

innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G # 12M代表文件初始大小,5G代表最大size

2.3 启动mysql服务

启动数据库后可以查一下是否生效:

show  variables like 'innodb_temp_data_file_path';

3 什么情况下会用到临时表

当EXPLAIN 查看执行计划结果的 Extra 列中,如果包含 Using Temporary 就表示会用到临时表,例如如下几种常见的情况通常就会用到:

a) GROUP BY 无索引字段或GROUP BY+ ORDER BY 的子句字段不一样时

b) order by 与distinct 共用,其中distinct与order by里的字段不一致(主键字段除外)

c)  UNION查询(MySQL5.7后union all已不使用临时表)

d)  insert into select ...from ...

小结:  上面列举的是最常见的使用临时表的情况,其中基本都是引起慢查询的因素,因此,如果遇到临时表空间文件暴涨是需要查看一下是否有大量的慢查询。

4.  和临时表空间相关的参数有哪些

各参数之间相互影响,其中直接影响临时表空间的参数如要有如下几个

innodb_temp_data_file_path 
tmp_table_size
max_heap_table_size
default_tmp_storage_engine
internal_tmp_disk_storage_engine

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值