mysql copy to tmp on disk

对于Mysql,show processlist的时候,能够发现有些进程处于copy to tmp on disk的过程当中。


在这里就,记录一下与临时表相关的内容。


1)临时表相关参数

可以看到参数当中与tmp相关的参数主要有这么三个,created_tmp_disk_tables, created_tmp_files, created_tmp_tables。

created_tmp_disk_tables --在磁盘上形成临时表的次数

created_tmp_files --形成的临时文件个数

created_tmp_tables --形成临时表的次数


为什么情况下会生成临时表,mysql官方文档上面有比较详细的说明:

https://dev.mysql.com/doc/refman/5.6/en/internal-temporary-tables.html 


2)tmp disk table

什么时候生成写到磁盘上的临时文件,与max_heap_table_size及tmp_table_size这两个参数相关。

当内存中的临时表大小小于这两者的较小值,就会发生临时表写盘的情况。

max_heap_table_size除了上述的功能,还有另外一方面的作用,就是作为engine为memory的表的大小限制。


3)相关例子


3-1) varchar过大引发的临时表写盘


一个表中的varchar字段设定比较大,但是实际上存储的时候又比较短。对于存储来讲没有特别大的问题,varchar是根据实际长度进行存储的,但是在发起询,将表加载如内存的时候很有可能出现临时表超出阈值,进行临时表写盘操作的情况。因为加载到内存当中,是按照该表该字段定义的长度进行加载的。一个超大varchar的表,表实际大小可能只有几十兆,但是临时表写盘的时候,就可能会使几个G。











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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值