Mysql
 sql >> Database >  >> RDS >> Mysql

salta la copia sulla tabella tmp sul disco mysql

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.