mysql做group by时,配置哪些参数,可以保证不会写磁盘?
一个简单的例子:myisam存储引擎,表里有约2M条记录,每条记录8个整形字段,磁盘文件大概占64MB。表上没有任何索引。执行 “select a, b, c, d, sum(e), sum(f), sum(g), sum(h) from table”。(a,b,c,d)没有重复,即结果集很大。
执行时间很长,大概几分钟之后,才开始返回结果。返回结果前,有相当长的时间里,处理器比较空闲,io等待比例很大,而且只是磁盘写操作,但写带宽并不大。机器内存远大于64MB,但还是用了磁盘写?
针对这个特定场景,调整哪些参数,调整成多少,可以完全避免磁盘写?
我尝试myisam_sort_buffer_size, sort_buffer_size, tmp_file_size调成128MB,效果还是没有改变。 用Limit 诊断一下问题
explain看看执行计划
页:
[1]