PostgreSQL

Kako ubiti neaktivne veze u PostgreSQL-u

Kako ubiti neaktivne veze u PostgreSQL-u

Prvi korak u promjenama ili čitanju nekih podataka iz PostgreSQL banke podataka je uspostavljanje veza. S druge strane, svaka je veza generirala režijske troškove koristeći postupak i pohranu. Zbog toga uređaj s minimalnim resursima (čitanje, pohrana, hardver) može podržati ograničeni skup veza. Jednom kada ograničeni agregat ode daleko dalje od neke točke, trebao bi nastaviti bacati pogreške ili negirati veze. Unutar PostgreSQL-a.conf, PostgreSQL pristojno radi na ograničavanju veza. U ovom ćemo uputstvu razmotriti različite oblike stanja koje veze PostgreSQL mogu imati. Pokazat ćemo vam kako odrediti je li veza aktivna ili je dugo bila neaktivna, au tom slučaju može se prekinuti kako bi se veze i resursi oslobodili.

Poveži se s poslužiteljem:

Na početku provjerite imate li pgAdmin4 potpuno funkcionalnu instalaciju na vašem računalnom sustavu. Otvorite ga iz svojih aplikacija. Morate ga povezati s localhostom davanjem lozinke.

Nakon povezivanja s root localhostom, povežite ga s PostgreSQL poslužiteljem. Upišite lozinku za povezivanje korisnika PostgreSQL 13 'Postgres. Dodirnite gumb U redu da biste nastavili.

Sada ste povezani s poslužiteljem PostgreSQL 13. Možete vidjeti popis baza podataka smještenih na poslužitelju kako je prikazano na donjoj slici. Postgresova baza podataka zadana je baza podataka 'stvorena u vrijeme instalacije PostgreSQL-a, dok je' testnu 'bazu podataka korisnik stvorio nakon instalacije.

Države veze:

Ako se uspostavi veza PostgreSQL, ona može izvoditi razne radnje koje rezultiraju prijelazima stanja. Treba donijeti racionalnu odluku o tome radi li veza ili je ostala neaktivna / neiskorištena, ovisno o stanju i trajanju u svakoj državi. Važno je napomenuti da dok aplikacija namjerno ne zatvori vezu, nastavit će raditi, trošeći resurse dugo nakon što se klijent odvoji. Postoje 4 potencijalna stanja veze:

Prepoznajte stanja veze:

Tablice kataloga PostgreSQL pružaju ugrađeni prikaz 'pg_stat_activity' za provjeru statistike o tome što veza radi ili koliko je vremena prošlo u ovom stanju. Da biste provjerili svu statistiku koja se odnosi na svaku bazu podataka i svako stanje veze, otvorite alat za upite i izvršite donji upit:

>> ODABERI * IZ pg_stat_activity;

Upit je plodno proveden i prikazana je napomena o postignuću.

Kada provjerite izlaznu stranu podataka, pronaći ćete tablicu s nekoliko stupaca, kao što je prikazano u nastavku. Stanja veza možete provjeriti provjerom vrijednosti polja 'stanje'.

Da biste pojednostavili izlaz i imali jasnu ideju veza, njihovih stanja, korisnika i poslužitelja u tim državama, morate izvršiti dolje modificirani upit u alatu za upite. Ovaj upit prikazuje samo 5 polja zapisa za veze i određene podatke u vezi s njima. Stupac 'pid' označava procesni id. Stupac 'stanje' sadrži stanja procesa. Stupac 'usename' identificira korisnika koji je radio na određenom procesu. Stupac 'datname' specificirao je ime baze podataka na kojoj je izvršena transakcija. Stupac 'datid' označava ID baze podataka.

>> ODABERITE pid, stanje, korisničko ime datname, datid, iz pg_stat_activity;

Izlaz ima ukupno 8 zabilježenih procesa. Stupac 'stanje' pokazuje da trenutno postoje samo 3 procesa. Jedan se čuva prema zadanoj bazi podataka "Postgres", a druga dva drži "test" baze podataka. Istodobno, korisnik 'Postgresa provodi ove procese.

Prepoznajte neaktivne veze:

Čini se da je "država" jedina vrijednost koju tražimo u gore spomenutim rezultatima. Te ćemo podatke upotrijebiti za utvrđivanje koji su procesi ili upiti u kojim državama i nakon toga dublje kopati. Pojedinosti koje tražimo možemo umanjiti preciziranjem upita, omogućujući nam da pripremimo intervenciju na toj određenoj vezi. To bismo mogli učiniti odabirom samo praznih PID-ova pomoću klauzule WHERE i stanja za te PID-ove. Također bismo trebali pratiti koliko je dugo veza bila neaktivna i osigurati da nemamo zanemarene veze koje rasipaju naše resurse. Kao rezultat, koristit ćemo naredbu koja je prefrazirana da bismo prikazali samo zapise koji su relevantni za procese koji trenutno ne rade:

>> ODABERITE pid, usename, useysid, datid, datname, application_name, backend_start, state_change, state FROM pg_stat_activity WHERE state = 'idle';

Upit je dohvatio samo 2 zapisa podataka u kojima je stanje bilo 'neaktivno' pomoću klauzule WHERE. Rezultat prikazuje 2 neaktivna procesa s određenim informacijama u vezi s njima.

Ubiti praznu vezu:

Nakon identifikacije praznih veza, sada je vrijeme da ih ubijemo. Jednom kad zaustavimo postupak u stanju čekanja ili neaktivnosti puno duže, mogli bismo upotrijebiti jednostavnu naredbu za lako prekidanje pozadinskog mehanizma bez ometanja aktivnosti poslužitelja. Moramo pružiti proces 'id' unutar upita u funkciji završetka.

>> ODABERI pg_terminate_backend (7408);

Proces je veličanstveno ubijen.

Sada provjerite preostale neaktivne veze iz dolje dodanog upita.

>> ODABERI datid, korisničko ime, ime, pid, stanje OD pg_stat_activity WHERE stanje = 'idle';

Izlaz prikazuje samo 1 preostali postupak koji je u stanju mirovanja.

Zaključak:

Pazite da ne propustite nijedan korak za učinkovito uništavanje neaktivnih veza iz baze podataka PostgreSQL.

OpenTTD vs Simutrans
Stvaranje vlastite simulacije prijevoza može biti zabavno, opuštajuće i izuzetno primamljivo. Zbog toga morate isprobati što više igara kako biste pro...
Vodič za OpenTTD
OpenTTD je jedna od najpopularnijih igara za poslovnu simulaciju. U ovoj igri morate stvoriti prekrasan prijevoznički posao. Međutim, počet ćete u poč...
SuperTuxKart za Linux
SuperTuxKart sjajan je naslov osmišljen kako bi vam besplatno pružio iskustvo Mario Kart na vašem Linux sustavu. Prilično je izazovno i zabavno igrati...