mysql 临时表空间占用太高_MySQL 临时表空间数据过多的问题排查-爱可生

数据库 data 磁盘不足,磁盘占用 80% 以上

数据库 binlog 磁盘不足,磁盘占用 80% 以上

二、排查过程

登陆告警的服务器,查看磁盘空间,并寻找大容量文件后,发现端口号为 4675 的实例临时表空间 ibtmp1 的大小有 955G,导致磁盘被使用了 86%;

8b3c6ae0d07045aded4a5de2ff3c8e00.png

猜测和库里执行长 SQL 有关系,产生了很多临时数据,并写入到临时表空间。

0fa90fd84b74533782c48e7a35b3100c.png

看到有这样一条 SQL,继续分析它的执行计划;

e9220182c95a25c6cffc338ff311346b.png

很明显看到图中标记的这一点为使用了临时计算,说明临时表空间的快速增长和它有关系。这条 SQL 进行了三表关联,每个表都有几十万行数据,三表关联并没有在 where 条件中设置关联字段,形成了笛卡尔积,所以会产生大量临时数据;而且都是全表扫描,加载的临时数据过多;还涉及到排序产生了临时数据;这几方面导致 ibtmp1 空间快速爆满。

三、解决办法

和项目组沟通后,杀掉这个会话解决问题;

6fbf8f48dede1f4dbde786d440dfb7c4.png

d68328de1d2c5fb2a0e8b64a4559fe73.png

但是这个 SQL 停下来了,临时表空间中的临时数据没有释放;

最后通过重启 mysql 数据库,释放了临时表空间中的临时数据,这个只能通过重启释放。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值