Ci sono due cose che puoi fare per ridurre l'impatto di questo
OPZIONE #1:Aumenta le variabili tmp_table_size e/o max_heap_table_size
Queste opzioni regoleranno la dimensione di una tabella temporanea in memoria prima che venga considerata troppo grande e quindi le pagine su disco come tabella MyISAM temporanea. Più grandi sono questi valori, meno è probabile che tu ottenga 'copia su tabella tmp su disco'. Per favore, assicurati che il tuo server abbia RAM sufficiente e max_connessioni è moderatamente configurato se una singola connessione DB necessita di molta RAM per le proprie tabelle temporanee.
OPZIONE n. 2:utilizza un disco RAM per le tabelle tmp
Dovresti essere in grado di configurare un disco RAM in Linux e quindi impostare tmpdir in mysql deve essere la cartella in cui è montato il disco RAM.
Per cominciare, configura un disco RAM nel sistema operativo
Crea una cartella in Linux chiamata /var/tmpfs
mkdir /var/tmpfs
Quindi, aggiungi questa riga a /etc/fstab (ad esempio, se desideri un disco RAM da 16 GB)
none /var/tmpfs tmpfs defaults,size=16g 1 2
e riavvia il server.
Nota:è possibile creare un disco RAM senza riavviare. Ricorda solo di aggiungere ancora la suddetta riga a /etc/fstab per avere il disco RAM dopo il riavvio del server.
Ora per MySQL:
Aggiungi questa riga in /etc/my.cnf
[mysqld]
tmpdir=/var/tmpfs
e riavvia MySQL.
OPZIONE #3:inserisci la tabella tmp nel disco RAM il prima possibile (supponendo che tu applichi prima l'OPZIONE #2)
Potresti voler forzare le tabelle tmp nel disco RAM il più rapidamente possibile in modo che MySQL non giri le ruote migrando grandi tabelle tmp in memoria in un disco RAM. Basta aggiungere questo a /etc/my.cnf:
[mysqld]
tmpdir=/var/tmpfs
tmp_table_size=2K
e riavvia MySQL. Ciò farà sì che anche la più piccola tabella temporanea venga creata direttamente nel disco RAM. Potresti eseguire periodicamente ls -l /var/tmpfs
per guardare i tavoli temporanei andare e venire.
Provalo!!!
AVVISO
Se non vedi altro che tabelle temporanee in /var/tmpfs 24 ore su 24, 7 giorni su 7, ciò potrebbe influire sulla funzionalità/prestazioni del sistema operativo. Per assicurarti che /var/tmpfs non venga sovrappopolato, esamina l'ottimizzazione delle tue query. Una volta fatto, dovresti vedere meno tabelle tmp materializzarsi in /var/tmpfs.