Copying table to Disk during execution

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!


I seem to be having an issue with a query's results being paged out to
disk during runtime.  I notice in processlist it saying "Copying to tmp
table on disk".

select col1, col2, count(ip) as 'COUNT' from db.table group by 2 order
by 1, 3;

None of the columns are a primary/foreign or an index.  This query
returns 92K rows and has taken anywhere from 50 seconds to run to over
1.5 minutes.  The table size on disk is around 33MB.

After doing some research i found that i should be changing the
tmp_table_size system variable.  Originally it was set to the MySQL
default, 33554432.   I set the varaible to 90,000,000 and it still
started paging out to the disk (this was the only query running at the
time).  I would think that 90MB in space would have been enough to
handle the query since that would assume over 600K row size.

I actually had some trouble setting the tmp_table_size for the global
variable but was able to change it as a session variable.

I have also tried altering the query_cache variable (which has only
slowed the query down - currently it sits at a size of 50MB) and also
the sort_buffer_size but neither have made a difference.

What is the magic variable that i should be messing with?  


Site Timeline