O MySQL usa tabelas temporárias quando a consulta não pode ser calculada em uma única passagem. Mudar o mecanismo de armazenamento não vai mudar isso. O problema é com a consulta , não com a configuração.
Aumentar o valor de tmp_table_size
só impedirá que alguns deles sejam gravados no disco, eles ainda serão criados na memória e preenchidos com dados. Esses dados provavelmente vêm do disco em primeiro lugar, embora com 48 GB de RAM você provavelmente tenha muito do cache. Mesmo em cache, uma vez que 30% dessas tabelas temporárias são maiores que 200 MB, copiar essa quantidade de dados na RAM ainda leva tempo.
Você pode determinar antes mesmo de executar uma consulta se ela usará uma tabela temporária ou não, usando a sintaxe EXPLAIN
. Basta colocar EXPLAIN
antes de sua consulta e irá gerar um monte de informações sobre o plano de execução e a eficiência da consulta sem realmente executá-la.
Provavelmente você pode encontrar as consultas que estão causando essas tabelas temporárias, pois elas provavelmente serão consultas lentas e, portanto, acabarão no seu log de consultas lentas.
Se você precisar de ajuda para definir consultas específicas, o DBA.SE é um bom lugar para ir.
TL; DR
Ajuste suas consultas.