Há duas coisas que você pode fazer para diminuir o impacto dessa
OPÇÃO 1 :Aumente as variáveis tmp_table_size e/ou max_heap_table_size
Essas opções controlarão o tamanho que uma tabela temporária na memória pode ter antes que ela seja considerada muito grande e, em seguida, páginas para o disco como uma tabela MyISAM temporária. Quanto maiores forem esses valores, menor será a probabilidade de você obter 'copiando para a tabela tmp no disco'. Certifique-se de que seu servidor tenha RAM suficiente e max_connections é configurado moderadamente caso uma única conexão de banco de dados precise de muita RAM para suas próprias tabelas temporárias.
OPÇÃO #2 :Use um disco RAM para tabelas tmp
Você deve ser capaz de configurar um disco RAM no Linux e, em seguida, definir o tmpdir no mysql para ser a pasta que tem o disco RAM montado.
Para começar, configure um disco RAM no sistema operacional
Crie uma pasta no Linux chamada /var/tmpfs
mkdir /var/tmpfs
Em seguida, adicione esta linha ao /etc/fstab (por exemplo, se você quiser um disco de 16 GB de RAM)
none /var/tmpfs tmpfs defaults,size=16g 1 2
e reinicie o servidor.
Nota:É possível fazer um disco RAM sem reiniciar. Apenas lembre-se de adicionar a linha acima mencionada ao /etc/fstab para ter o disco RAM após a reinicialização do servidor.
Agora para MySQL:
Adicione esta linha em /etc/my.cnf
[mysqld]
tmpdir=/var/tmpfs
e reinicie o mysql.
OPÇÃO #3:Obtenha a tabela tmp no disco RAM o mais rápido possível (supondo que você aplique a OPÇÃO #2 primeiro)
Você pode querer forçar tabelas tmp no disco RAM o mais rápido possível para que o MySQL não gire suas rodas migrando grandes tabelas tmp na memória para um disco RAM. Basta adicionar isso ao /etc/my.cnf:
[mysqld]
tmpdir=/var/tmpfs
tmp_table_size=2K
e reinicie o mysql. Isso fará com que até mesmo a menor tabela temporária seja criada diretamente no disco RAM. Você pode executar periodicamente
ls -l /var/tmpfs
para ver as mesas temporárias irem e virem. De uma chance !!!
AVISO
Se você não vir nada além de tabelas temporárias em /var/tmpfs 24/7, isso pode afetar a funcionalidade/desempenho do sistema operacional. Para garantir que /var/tmpfs não fique superpovoado, procure ajustar suas consultas. Depois de fazer isso, você verá menos tabelas tmp se materializando em /var/tmpfs.