Introduzione
Processi MySQL non necessari possono causare problemi di prestazioni nel sistema. Nel tempo, i thread attivi si accumulano e bloccano il tuo server impedendo agli utenti di accedere alle tabelle ed eseguire richieste.
Quando l'utilizzo delle risorse è estremamente elevato, potrebbe essere necessario interrompere i processi MySQL. Questa guida ti mostrerà come identificare i processi MySQL e terminare un processo.
Prerequisiti
- Accesso a una riga di comando/finestra del terminale
- MySQL o MariaDB installati
- Utente con sudo o root privilegi
Come trovare l'elenco dei processi MySQL
Prima di poter individuare un processo e terminarlo, è necessario accedere a un server MySQL locale o remoto. Per accedere al tuo account locale MySQL come root, apri il terminale e inserisci:
mysql -u root -p
Digita la password quando richiesto. Quando la shell MySQL viene caricata, il prompt mostra mysql>
.
Per individuare un processo da terminare o terminare, caricare l'elenco con tutte le sessioni attive.
Nella shell MySQL, usa questa query:
SHOW PROCESSLIST;
L'output mostra le seguenti informazioni:
Potresti avere più voci nella tua lista. Nota l'Id
del processo che vuoi uccidere. Il Time
La colonna aiuta a determinare i processi più longevi. Di solito sono quelli che vuoi terminare per primi.
Come eliminare il processo MySQL
Per terminare una sessione MySQL dall'elenco, usa il KILL
query seguita dal thread Id
hai notato prima.
KILL 14;
La shell mostra lo stato della query e il numero di righe interessate:"Query OK, 0 righe interessate (0,06 sec) .” Questa query termina la connessione al database, comprese tutte le operazioni associate alla connessione.
Ricorda che un utente deve disporre dei privilegi appropriati per poter terminare un processo.
Come eliminare tutti i processi MySQL per un utente specifico
MySQL non ha un comando univoco per uccidere tutti i processi.
Per terminare tutti i processi per un utente specifico, usa CONCAT
per creare un file con l'elenco dei thread e delle istruzioni. Nel nostro caso, abbiamo inserito root come utente. Per specificare un altro utente, sostituisci root con il nome utente desiderato.
SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE user='root' INTO OUTFILE '/tmp/process_list.txt';
Questa query ha creato un file chiamato process_list.txt . Puoi modificare il nome a tuo piacimento. Apri il file e controlla se quelli sono i processi che vuoi uccidere. Quando sei pronto, inserisci:
SOURCE /tmp/process_list.txt;
È possibile aggiungere condizioni alla query per restringere l'elenco dei processi nel file di output. Ad esempio, aggiungi time > 1000
al comando per includere solo i processi con valore temporale maggiore di 1000.
SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE user='root' and time>1000 INTO OUTFILE '/tmp/process_list.txt';