Come uccidere Sleeping connessioni MySQL

April 14

MySQL è un programma di database open-source progettato per funzionare su più piattaforme. Ogni database può avere più connessioni in entrata. Quando un programma o un utente si connette a una riga o una tabella nel database, i dati che sta accedendo è bloccato. Questo significa che un altro utente o programma non può accedere agli stessi dati allo stesso tempo. I programmi sono in genere progettati per memorizzare nella cache i dati per evitare di bloccare le risorse del database. Tuttavia, uno script può essere usato per uccidere un "sonno", o di inattività, la connessione in base alle esigenze.

istruzione

1 Aprire la riga di comando di MySQL come utente amministrativo. In Windows, fare clic sul menu "Start" e digitare "cmd.exe" nel campo "Cerca", quindi premere "Invio". Sui sistemi Linux / Unix, aprire una nuova finestra "Terminal" e digitare "su" per accedere all'account di root.

2 Digitare "mysql" per aprire il prompt dei comandi di MySQL.

3 Digitare il seguente codice e premere il tasto "Enter" per inserire linee aggiuntive e creare una procedura:

DELIMITER %%

Ciò consente di immettere il testo per il nuovo script o la procedura in MySQL.

4 Digitare le righe seguenti, premendo il tasto "Invio" dopo ogni riga:

CREATE PROCEDURE killsleepingconnections ()

Commento 'Script di uccidere le connessioni dormire'

Legge i dati SQL

Queste linee definiscono il nome della procedura "killsleepingconnections" e immettere una descrizione per questo. È possibile sostituire il nome della procedura con un altro nome, se si preferisce.

5 Digitare le righe seguenti, premendo il tasto "Invio" dopo ogni riga:

INIZIO

DICHIARARE end_rows BOOLEANO;

DICHIARARE no_loops INT DEFAULT 0;

DICHIARARE rownum INT DEFAULT 0;

Questo codice avvia lo script e dichiara variabili di lavorare con la connessione.

6 Digitare le righe seguenti, premendo il tasto "Invio" dopo ogni riga:

DICHIARARE cur cursore FOR

SELECT MATR

DA information_schema.PROCESSLIST PL

DOVE PL.COMMAND = 'Sleep' E PL.TIME> 120;

DICHIARARE CONTINUA gestore per NON TROVATO

end_rows SET = true;

Queste linee recuperano la prima connessione nel database che è stato inattivo per 120 secondi o più. È possibile ridefinire il periodo di sonno, se necessario, semplicemente sostituendo "120" con il numero di secondi che si desidera consentire.

7 Digitare le righe seguenti, premendo il tasto "Invio" dopo ogni riga:

Ucur APERTA;

selezionare FOUND_ROWS () in rownum;

ciclo: LOOP

SE end_rows THEN

Ucur CLOSE;

LASCIARE ciclo;

FINISCI SE;

FINE%%

DELIMITER;

Queste linee chiudere la connessione e terminare la definizione di routine. La nuova procedura può essere chiamato da l'interfaccia della riga di comando MySQL o dal programma di amministrazione grafica utilizzando il nome definito all'inizio della procedura.

8 Digitare quanto segue per richiamare la procedura dall'interfaccia MySQL a riga di comando:

chiamare killsleepingconnections ()

Questo chiamerà la procedura creato nei passaggi precedenti e chiudere tutte le connessioni che sono state dormendo più di due minuti. La procedura viene memorizzato permanentemente sul server MySQL e può essere richiamato in qualsiasi momento.