Hvordan Kill Sleeping MySQL tilkoblinger

MySQL er en åpen kildekode-database program laget for å kjøres på flere plattformer. Hver database kan ha flere innkommende tilkoblinger. Når et program eller bruker kobler til en rad eller bord i databasen, blir dataene det er tilgang låst. Dette betyr at en annen bruker eller et program kan ikke få tilgang til de samme data på samme tid. Programmer er normalt utformet til å cache data for å unngå å låse databaseressurser. Imidlertid kan et skript brukes til å drepe en "sovende", eller inaktiv, tilkobling etter behov.

Bruksanvisning

1 Åpne MySQL kommandolinje som en administrativ bruker. I Windows klikker du på "Start" -menyen og skriv "cmd.exe" i "Søk" -feltet, og trykk "Enter". På Linux / Unix-systemer, åpne en ny "Terminal" vinduet og skriv "su" for å få tilgang til root-kontoen.

2 Skriv "mysql" for å åpne MySQL ledeteksten.

3 Skriv inn følgende kode og trykk "Enter" for å legge inn ekstra linjer og lage en prosedyre:

DELIMITER %%

Dette gjør at du kan skrive inn tekst for det nye manuset eller prosedyre i MySQL.

4 Skriv inn følgende linjer ved å trykke "Enter" etter hver linje:

CREATE PROSEDYRE killsleepingconnections ()

KOMMENTAR 'Script for å drepe sove tilkoblinger'

LESER SQL DATA

Disse linjene definerer navnet på prosedyren "killsleepingconnections" og skriv inn en beskrivelse for det. Du kan bytte ut navnet på prosedyren med et annet navn hvis du foretrekker.

5 Skriv inn følgende linjer ved å trykke "Enter" etter hver linje:

BEGYNNE

ERKLÆRER end_rows boolsk;

ERKLÆRER no_loops INT STANDARD 0;

ERKLÆRER ROWNUM INT STANDARD 0;

Denne koden starter skriptet og erklærer variabler å jobbe med tilkoblingen.

6 Skriv inn følgende linjer ved å trykke "Enter" etter hver linje:

ERKLÆRER cur CURSOR FOR

SELECT ID

Fra information_schema.PROCESSLIST PL

HVOR PL.COMMAND = 'Sleep' OG PL.TIME> 120;

ERKLÆRER FORTSETT HANDLER FOR IKKE FUNNET

SET end_rows = true;

Disse linjene hente den første forbindelsen i databasen som har vært inaktiv i 120 sekunder eller mer. Du kan omdefinere hvileperioden etter behov, bare ved å bytte ut "120" med det antall sekunder du vil tillate.

7 Skriv inn følgende linjer ved å trykke "Enter" etter hver linje:

OPEN ucur;

Velg FOUND_ROWS () inn ROWNUM;

sløyfe: LOOP

IF end_rows SÅ

CLOSE ucur;

FORLATER sløyfe;

SLUTT OM;

SLUTT%%

DELIMITER;

Disse linjene lukke tilkoblingen og avslutte prosedyren definisjon. Den nye prosedyren kan kalles fra MySQL kommandolinje-grensesnitt eller fra det grafiske administrasjonen program å bruke navnet definert i begynnelsen av prosedyren.

8 Skriv inn følgende å kalle prosedyren fra MySQL kommandolinjegrensesnitt:

kalle killsleepingconnections ()

Dette vil kalle prosedyren opprettet i forrige trinn og lukk eventuelle forbindelser som har vært sover mer enn to minutter. Prosedyren er permanent lagret på MySQL server og kan bli kalt til enhver tid.