Det finns två saker du kan göra för att minska effekten av detta
ALTERNATIV #1 :Öka variablerna tmp_table_size och/eller max_heap_table_size
Dessa alternativ kommer att styra hur stor en temporär tabell i minnet kan vara innan den anses vara för stor och sedan sidor till disk som en tillfällig MyISAM-tabell. Ju större dessa värden är, desto mindre sannolikt kommer du att få "kopiering till tmp-tabell på disk". Se till att din server har tillräckligt med RAM och max_anslutningar är måttligt konfigurerad om en enda DB-anslutning skulle behöva mycket RAM-minne för sina egna temporära tabeller.
ALTERNATIV #2:Använd en RAM-disk för tmp-tabeller
Du bör kunna konfigurera en RAM-disk i Linux och sedan ställa in tmpdir i mysql för att vara mappen som har RAM-skivan monterad.
Till att börja med, konfigurera en RAM-disk i OS
Skapa en mapp i Linux som heter /var/tmpfs
mkdir /var/tmpfs
Lägg sedan till den här raden i /etc/fstab (till exempel om du vill ha en 16 GB RAM-disk)
none /var/tmpfs tmpfs defaults,size=16g 1 2
och starta om servern.
Obs:Det är möjligt att skapa en RAM-disk utan att starta om. Kom bara ihåg att fortfarande lägga till den tidigare nämnda raden i /etc/fstab för att få RAM-disken efter en omstart av servern.
Nu för MySQL:
Lägg till den här raden i /etc/my.cnf
[mysqld]
tmpdir=/var/tmpfs
och starta om mysql.
ALTERNATIV #3:Hämta tmp-tabellen till RAM-disken ASAP (förutsatt att du använder ALTERNATIV #2 först)
Du kanske vill tvinga in tmp-tabeller i RAM-disken så snabbt som möjligt så att MySQL inte snurrar på hjulen och migrerar stora tmp-tabeller i minnet till en RAM-disk. Lägg bara till detta i /etc/my.cnf:
[mysqld]
tmpdir=/var/tmpfs
tmp_table_size=2K
och starta om mysql. Detta kommer att göra att även den minsta temptabellen skapas direkt i RAM-disken. Du kan med jämna mellanrum köra ls -l /var/tmpfs
att se vikariebord komma och gå.
Ge det ett försök !!!
VARNING
Om du inte ser något annat än temporära tabeller i /var/tmpfs 24/7, kan detta påverka operativsystemets funktionalitet/prestanda. För att vara säker på att /var/tmpfs inte blir överbefolkad, titta på att ställa in dina frågor. När du väl gör det bör du se färre tmp-tabeller materialiseras i /var/tmpfs.