遇到了Mysql创建临时表到磁盘,找了不少方法去分析原因并加以调整。不少MYSQL分析方法有点难度并需要花很少精力。

很多情况下,尝试增加tmp_table_size不太能根本上解决临时表占用过多的问题。这时侯,应该检查一下索引是否设置合理。

如果MYSQL索引设置不合理,创建的临时数据量则过大,内存放不下了,自然存到磁盘上去了。

注意:

mysql在把结果集存放到临时表的时候,并不是结果集的实际大小,而是你对每个字段所定义的大小。比如,你的结果集里面有一个name字段是varchar(20),你的name的值大多是4个字符。但mysql处理这个结果集放入临时表的时候,是按照20个字节来放的。所以建议检查一些字段的设计,是否定义过大了