美文网首页
MySQL5.7 ibtmp1 给我上了一课

MySQL5.7 ibtmp1 给我上了一课

作者: 程序员阿晨 | 来源:发表于2021-03-09 22:08 被阅读0次

最近撞大运了,每天都能遇到几个有趣的问题。
晚饭之后简单记录一下。


现象:有个项目调用接口连接超时,排查了一圈,发现往数据库插入数据时卡住了,程序没有做任何响应。最终的原因是服务器中存放mysql数据所在的磁盘分区被占满了,罪魁祸首是一个名为ibtmp1的文件(将近352G)。

ibtmp1这玩楞是个啥?

查看官方文档后发现这是非压缩的innodb临时表的独立表空间。通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在支持大文件的系统这个文件大小是可以无限增长的。

ibtmp1增长的原因:

btmp1增长主要与SQL有关,尤其是大量的分组聚合,排序,join查询SQL,通常如下情况会造成iptmp1上涨:

  • 查询语句会先查询temp_table_size(内存分配)的量,当临时存储的量超过这个参数限制时,就会在iptmp1中申请占用空间
  • select order group by GROUP BY 无索引字段或group by + order by 的子句字段不一样时。
  • select (select) 子查询
  • insert into select ... from ... 表数据复制
  • select union select 联合语句

想来想去这些个原因,我好想都没涉及到,也没再次复现,先记录一下,留院观察吧。

解决办法:

  • 限制ibtmp1文件大小,修改my.cnf配置:innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G
  • 优化SQL,避免使用临时表
  • 启mysql实例释放ibtmp1文件(重启mysql之后 ibtmp1会释放,恢复到默认的12M,可惜回恢复之后没能复现)

相关文章

  • MySQL5.7 ibtmp1 给我上了一课

    最近撞大运了,每天都能遇到几个有趣的问题。晚饭之后简单记录一下。 现象:有个项目调用接口连接超时,排查了一圈,发现...

  • 给我上了一课

    真的是绝了,刚开学认识感觉还不错,处着处着就发现这个人表里不一。为什么呢,素质差的不是一点点,每天准时熄灯上床给对...

  • 孩子给我上了一课

    为参加学校的猜灯谜活动,我和孩子特意准备了材料,查询了制作方法。周日一早,我娘俩就开始做灯笼。 ...

  • 警察给我上了一课

    2018年7月15日 星期日 晴 海岛冬天天气温度还是不低的,每天都是在30度上下,有海风,不觉得热。刚到时,脸上...

  • 儿子给我上了一课

    不养儿不知父母恩 出差外地,当你想孩子时,他却沉迷于自己的玩具,懒得理你;抑或和别人滔滔不绝,和你电话敷衍两句匆匆...

  • 她给我上了一课

    最近一直比较忙,所以已经趋近于“两耳不闻窗外事,一心只闻圣贤书”的状态了! 就在前不久,周末在家休息时,微信的通知...

  • 生活给我上了一课

    今天,九月30号,正逢国庆假,作为高三生,放假最晚的一批,我登上归途。天空灰朦,细雨飘飘,耳边充斥这汽车发动机嘈杂...

  • 骗子给我上了一课

    昨天晚上在回来的路上遇到骗子,幸好有一定的防备心理和警觉心,不然就上当受骗了,不过回想起来这个骗子的套路也蛮深的...

  • 刊物给我上了一课

    书展会上有位学者向我推荐了这本书《思辨与立场》那时我正立在一排书柜旁翻阅一本关于心理学的书。她说:"这本书挺好的,...

  • 父亲给我上了一课

    很久没看书了,前两天看完了《人性的弱点》感觉受益匪浅,觉得很适合脾气不好的老爸,于是推荐给我爸。我爸接过书翻了一...

网友评论

      本文标题:MySQL5.7 ibtmp1 给我上了一课

      本文链接:https://www.haomeiwen.com/subject/gitiqltx.html