mysql临时表,临时表空间,ibtmp1表空间暴增原因初探



问题的形式解答:


一、MySQL在什么情况下会创建临时表(Internal Temporary Table Use in MySQL)?


我列举3个


1. UNION查询;


2. insert into select …from …


3. ORDER BY和GROUP BY的子句不一样时;


4.数据表中包含blob/text列


等等,其实还有好多。具体参考 https://dev.mysql.com/doc/refman/5.7/en/internal-temporary-tables.html






二、怎么知道mysql用了临时表呢?


这个问题很简单,

EXPLAIN 查看执行计划结果的 Extra 列中,如果包含 Using Temporary 就表示会用到临时表。举个例子,有个感性认识。


创建测试表t22 :create table t22 as select * from information_schema.tables;


三、临时表有关的参数有哪些?

开发云主机域名

innodb_temp_data_file_path = ibtmp1:12M:autoextend

tmp_table_size = 16777216

max_heap_table_size =16777216

default_tmp_storage_engine=InnoDB






internal_tmp_disk_storage_engine=

InnoDB

四、mysql临时表配置参数是tmp_table_size,当临时表空间不够用的时候怎么办?


如果临时表中需要存储的数据量超过了上限(

tmp-table-size



max-heap-table-size

中取其大者),这时候就需要生成基于磁盘的临时表了。也就是放在innodb_temp_data_file_path指定的临时表空间中。


如果你对这句话有疑问,那我举个例子来看下:反复执行语句: insert into t22 select * from t22; 同时查看表空间ibtmp1的大小变化。反复执行insert 语句,插入表中的数量指数级增长。


看下例子:







五、看图说话,做了上个实验,不知道你是否会有如下想法:既然内部临时表(Internal Temporary Table)用于排序,分组,当需要的存储空间超过

tmp-table-size

上限的时候,使用临时表空间。临时表空间是磁盘,速度比不上内存,那是不是可以加大tmp_table_size来优化需要使用临时表的SQL语句?


当然可以呀,tmp_table_size最大值是18446744073709551615,如果建议256M。




六、mysql中是如何监控临时表和临时表空间使用情况的?



建议Created_tmp_disk_tables/Created_tmp_tables不要超过25%。如果Created_tmp_disk_tables数量很大,查看是否有很多慢sql,是否有很多使用临时表的语句。加大

tmp_table_size

的值。

七、mysql的临时表空间文件暴增,可以达到几百G,你认为形成的原因是什么?


第四个问题做的例子,如果你不停的反复的实验,你会发现ibtmp1增长的速度惊人。有个项目,曾经ibtmp1暴增到300G。一看慢sql日志,有大量慢sql,而且有很多语句需要排序。所以给ibtmp1加上限制最大值。innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G,mysql会反复利用。


参考:老叶茶馆


https://mp.weixin.qq.com/s?__biz=MjM5NzAzMTY4NQ==&mid=207355450&idx=3&sn=3e3a2c0a7497a8cd099ddc5c33a9932d&scene=21#wechat_redirect

相关推荐: Linux平台下MySQL数据库定时备份

根据要求写下MySQL备份脚本,要求如下:对指定数据库进行日备份并且将备份文件保存一周,对一周以外文件自动删除。 1、创建shell脚本[root@server18 mysql]$ mkdir -p/home/mysql/DB_BAK/day_bak/ DB_…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 06/05 12:50
Next 06/05 12:51

相关推荐