mysql innodb临时表btmp1文件太大

某日生产环境(数据库实例)告警,磁盘使用率过高!

检查发现是由于mysql的data目录的ibtmp1文件太大,达到了30GB

一、ibtmp1文件是干嘛的?

就是用来存放临时表查询时的数据。

二、ibtmp1增长的原因是什么?
主要与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 联合语句

注意:临时表释放后,空间会释放,但是磁盘空间不会释放,空闲空间可以被复用。释放磁盘空间只能重启

三、解决办法
1、去检查sql!

通过慢查询日志找到慢sql(包含子查询的sql着重关注),要确保子查询内的结果集不要太大(返回太多行),可以通过子查询的where条件缩减结果集。

或是通过show processlist查询的,如图:

mysql innodb临时表btmp1文件太大

我这里正是因为sql太慢,和子查询的结果集太大,导致了mysql线程卡死。通过优化后,iptmp1文件大小正常了。

2、my.cnf配置临时文件大小限制

[mysqld]
innodb_temp_data_file_path=ibtmp1:12M:autoextend:max:500M

不推荐,因为一旦临时文件增长到500M后, 再进行需要临时表的sql查询(例如子查询),是会报错的!

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/10602

(0)
凯影的头像凯影
上一篇 2023年12月15日 下午3:29
下一篇 2023年12月18日 下午3:06

相关推荐

  • Mysql5.5中文乱码问题

    查看MySQL的字符集 发现有部分不是utf-8 一(推荐,本人实验有用) 修改MySQL配置文件,来到mysql安装目录,找到my.ini文件(可能没有此文件,没有就自己建一个,本人就是没有该文件) 若有my.ini文件 进去之后,在三个地方增加配置 第一个 第二个 第三个 若没有my.ini文件,则添加一个,内容为: 注意!!! 记得重启mysql服务 …

    2022年8月21日
    1.2K00
  • 手把手教你在Centos7.6环境下安装Redis(含详细图文)

    1.Linux安装redis 下载: wget http://download.redis.io/releases/redis-2.8.17.tar.gz 解压源码包 tar xzf redis-2.8.17.tar.gz 解压完成后的目录 redis-2.8.17 安装 执行完make命令后,在redis-2.8.17 的 src目录下会出现编译后的 re…

    2022年6月14日
    1.4K00
  • Elasticsearch Query DSL查询入门

    Query DSL又叫查询表达式,是一种非常灵活又富有表现力的查询语言,采用JSON接口的方式实现丰富的查询,并使你的查询语句更灵活、更精确、更易读且易调试 查询与过滤 Elasticsearch(以下简称ES)中的数据检索分为两种情况:查询和过滤。 Query查询会对检索结果进行评分,注重的点是匹配程度,例如检索“运维咖啡吧”与文档的标题有多匹配,计算的是…

    2023年5月26日
    87500
  • MySQL异常解决】MySQL执行SQL文件出现【Unknown collation ‘utf8mb4_0900_ai_ci‘】的解决方案

    一、背景描述从服务器MySQL中导出数据为SQL执行脚本后,在本地电脑执行导出的SQL脚本, 报错:Unknown collation ‘utf8mb4_0900_ai_ci‘ 打开SQL脚本,查看 utf8mb4_0900_ai_ci 关键字,这是字段的字符集。 二、报错原因1、MySQL 版本不一样;2、utf8mb4_0900_ai_ci 在 MySQ…

    2023年8月23日
    1.2K00
  • delete、truncate、drop的区别

    MySQL删除数据的方式都有哪些? 咱们常用的三种删除方式:通过 delete、truncate、drop 关键字进行删除;这三种都可以用来删除数据,但场景不同。 一、从执行速度上来说 二、从原理上讲 1、DELETE 1、DELETE属于数据库DML操作语言,只删除数据不删除表的结构,会走事务,执行时会触发trigger; 2、在 InnoDB 中,DEL…

    2023年8月31日
    1.3K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信