„PostgreSQL“

Kaip nužudyti tuščiosios eigos jungtis „PostgreSQL“

Kaip nužudyti tuščiosios eigos jungtis „PostgreSQL“

Pirmas žingsnis atliekant pakeitimus ar skaitant tam tikrą informaciją iš „PostgreSQL“ duomenų banko yra užmegzti ryšius. Kita vertus, kiekviena nuoroda generavo pridėtines išlaidas, naudodama procedūrą ir saugyklą. Štai kodėl įrenginys, turintis minimalius išteklius (skaitymo, saugojimo, aparatinės įrangos), gali palaikyti ribotą jungčių visumą. Kai ribotas agregatas peržengs toli už taško ribų, jis turėtų ir toliau mesti klaidas arba neigti ryšius. „PostgreSQL“.conf, „PostgreSQL“ atlieka deramą darbą ribodamas nuorodas. Šioje pamokoje apžvelgsime įvairias būsenų formas, kurias gali turėti „PostgreSQL“ nuorodos. Parodysime, kaip nustatyti, ar nuoroda aktyvi, ar ilgą laiką buvo neaktyvi. Tokiu atveju ją galima atjungti, kad būtų atlaisvintos nuorodos ir ištekliai.

Prisijunkite prie serverio:

Pradžioje įsitikinkite, kad „pgAdmin4“ buvo visiškai įdiegta jūsų kompiuterio sistemoje. Atidarykite jį iš savo programų. Turite jį susieti su „localhost“ pateikdami slaptažodį.

Po ryšio su root localhost prijunkite jį su „PostgreSQL“ serveriu. Įveskite „PostgreSQL 13“ vartotojo „Postgres“ prisijungimo slaptažodį. Norėdami tęsti, bakstelėkite mygtuką Gerai.

Dabar esate prisijungę prie „PostgreSQL 13“ serverio. Galite pamatyti duomenų bazių, esančių serveryje, sąrašą, pateiktą toliau pateiktame paveikslėlyje. „Postgres“ duomenų bazė yra numatytoji duomenų bazė, sukurta „PostgreSQL“ diegimo metu, o „testo“ duomenų bazę sukūrė vartotojas po įdiegimo.

Ryšio būsenos:

Jei yra sukurta „PostgreSQL“ nuoroda, ji gali atlikti įvairius veiksmus, kurie lemia būsenos perėjimą. Turėtų būti priimtas racionalus sprendimas, ar nuoroda veikia, ar ji liko nenaudojama / nenaudojama, atsižvelgiant į būseną ir trukmę, kurią ji buvo kiekvienoje būsenoje. Svarbu pažymėti, kad tol, kol programa sąmoningai uždarys ryšį, ji veiks ir švaistys išteklius ilgai po kliento atsijungimo. Yra 4 potencialios ryšio būsenos:

Nustatykite ryšio būsenas:

„PostgreSQL“ katalogo lentelėse yra įmontuotas rodinys „pg_stat_activity“, kad būtų galima patikrinti statistiką apie tai, ką daro nuoroda arba kiek laiko ji buvo šioje būsenoje. Norėdami patikrinti visą kiekvienos duomenų bazės ir kiekvienos ryšio būsenos statistiką, atidarykite užklausos įrankį ir vykdykite toliau pateiktą užklausą:

>> PASIRINKTI * IŠ pg_stat_activity;

Užklausa buvo įgyvendinta vaisingai ir parodytas įvykio užrašas.

Patikrinę jo duomenų išvesties pusę, rasite lentelę su keliais stulpeliais, kaip parodyta žemiau. Ryšių būsenas galite patikrinti, patikrindami lauko „state“ reikšmes.

Norėdami supaprastinti išvestį ir aiškiai suprasti jungtis, jų būsenas, vartotojus ir serverius tose būsenose, turite atlikti žemiau modifikuotą užklausą užklausos įrankyje. Ši užklausa rodo tik 5 ryšių įrašų laukus ir konkrečius su jais susijusius duomenis. Stulpelis „pid“ reiškia proceso ID. Stulpelyje „būsena“ pateikiamos procesų būsenos. Stulpelyje „usename“ nurodomas vartotojas, dirbęs konkretų procesą. Stulpelyje „datname“ nurodomas duomenų bazės pavadinimas, kuriam operacija buvo vykdoma. Stulpelis „datid“ reiškia duomenų bazės ID.

>> SELECT pid, state, usename datname, datid, iš pg_stat_activity;

Išvestyje iš viso užregistruoti 8 procesai. Stulpelis „būsena“ rodo, kad šiuo metu veikia tik 3 procesai. Vieną laiko pagal numatytąją duomenų bazę „Postgres“, o kitas dvi - pagal duomenų bazės „testą“. Tuo pačiu metu „Postgres“ vartotojas atliko šiuos procesus.

Nustatykite neveikos jungtis:

Atrodo, kad „valstybė“ yra vienintelė vertė, kurios ieškome aukščiau minėtuose rezultatuose. Mes naudosime šią informaciją norėdami nustatyti, kurie procesai ar užklausos yra kokiose būsenose, ir vėliau įsigilinsime. Mes galime susiaurinti ieškomą informaciją patikslindami užklausą, leisdami mums parengti intervenciją į tą konkretų ryšį. Tai galėtume padaryti pasirinkdami tik nenaudojamus PID, naudodami WHERE sąlygą ir būsenas tiems PID. Taip pat turėtume sekti, kiek laiko saitas buvo neaktyvus, ir užtikrinti, kad neturėtume jokių apleistų nuorodų, švaistančių mūsų išteklius. Dėl to naudosime žemiau performuotą komandą, kad būtų rodomi tik įrašai, susiję su šiuo metu neveikiančiais procesais:

>> SELECT pid, usename, usesysid, datid, datname, application_name, backend_start, state_change, state FROM pg_stat_activity WHERE state = 'nenaudojamas';

Naudojant WHERE sąlygą, užklausa pateikė tik 2 duomenų įrašus, kurių būsena buvo „nenaudojama“. Rezultatas rodo 2 neveikimo procesus su tam tikra informacija apie juos.

Nužudykite neveikos ryšį:

Nustačius nenaudojamus ryšius, dabar laikas juos nužudyti. Kai mes sustabdysime procesą sulaikytoje būsenoje arba būsime neaktyvūs daug ilgiau, galėtume naudoti paprastą komandą, kad galėtume lengvai nutraukti back-end mechanizmą, nenutraukdami serverio veiklos. Mes turime pateikti proceso „id“ užklausoje, naudodami terminate funkciją.

>> PASIRINKITE pg_terminate_backend (7408);

Procesas buvo puikiai užmuštas.

Dabar patikrinkite likusius nenaudojamus ryšius iš toliau pridėtos užklausos.

>> PASIRINKITE datid, vartotojo vardą, datname, pid, būseną FROM pg_stat_activity WHERE state = 'nenaudojamas';

Išvestyje rodomas tik 1 likęs procesas, kuris yra nenaudojamas.

Išvada:

Nepamirškite nė vieno žingsnio, kad efektyviai užmuštumėte neaktyvius ryšius iš „PostgreSQL“ duomenų bazės.

„SuperTuxKart“, skirta „Linux“
„SuperTuxKart“ yra puikus pavadinimas, sukurtas nemokamai suteikti „Mario Kart“ patirtį jūsų „Linux“ sistemoje. Tai gana sudėtinga ir smagu žaisti, yr...
„Battle for Wesnoth“ pamoka
„Battle for Wesnoth“ yra vienas populiariausių atvirojo kodo strateginių žaidimų, kurį šiuo metu galite žaisti. Šis žaidimas ne tik buvo kuriamas laba...
0 A.D. Pamoka
Iš daugybės strateginių žaidimų 0 A.D. sugeba išsiskirti kaip išsamus pavadinimas ir labai gilus, taktinis žaidimas, nepaisant to, kad yra atviro kodo...