A módosítások vagy a PostgreSQL adatbázisból származó információk kiolvasásának első lépése a kapcsolatok létrehozása. Másrészről, mindegyik kapcsolat az eljárás és a tárolás felhasználásával generált rezsit. Éppen ezért egy minimális erőforrásokkal (olvasás, tárolás, hardver) rendelkező eszköz támogatja a kapcsolatok korlátozott összesítését. Miután a korlátozott aggregátum messze túlmutatott egy ponton, folytatnia kell a hibák elvetését vagy a kapcsolatok megtagadását. A PostgreSQL-en belül.conf, a PostgreSQL tisztességes munkát végez a linkek korlátozásában. Ebben az oktatóanyagban megvizsgáljuk a PostgreSQL linkek különböző állapotformáit. Megmutatjuk, hogyan lehet meghatározni, hogy a link aktív vagy hosszú ideig inaktív volt-e, ebben az esetben leválasztható a linkek és az erőforrások felszabadítása érdekében.
Csatlakozás a szerverhez:
Először ellenőrizze, hogy a pgAdmin4 teljesen működőképes-e a számítógépen. Nyissa meg az alkalmazásaiból. Jelszó megadásával össze kell kapcsolnia a localhosttal.
A root localhost kapcsolata után csatlakoztassa a PostgreSQL szerverhez. Írja be a jelszót a PostgreSQL 13 felhasználó 'Postgres csatlakozásához. A folytatáshoz érintse meg az OK gombot.
Most csatlakozott a PostgreSQL 13 szerverhez. Megtekintheti a kiszolgálón található adatbázisok listáját, amint az az alább mellékelt képen látható. A Postgres adatbázisa az alapértelmezett adatbázis, amelyet a PostgreSQL telepítésekor hoztak létre, míg a „teszt” adatbázist egy felhasználó hozta létre a telepítés után.
Csatlakozási állapotok:
Ha létrejön egy PostgreSQL kapcsolat, az különféle műveleteket hajthat végre, amelyek állapotátmeneteket eredményeznek. Racionális döntést kell hozni arról, hogy a kapcsolat működik-e, vagy tétlen / kihagyatlan állapotban van-e, az állapottól és az egyes államok időtartamától függően. Fontos megjegyezni, hogy amíg az alkalmazás szándékosan nem zárja le a kapcsolatot, addig továbbra is működik, erőforrásokat pazarolva még az ügyfél leválasztása után. A kapcsolatnak 4 lehetséges állapota van:
- Aktív: Ez azt jelenti, hogy a link működik és működik.
- Tétlen: Ez azt jelenti, hogy a link inaktív, ezért nyilvántartást kell vezetnünk róluk, attól függően, hogy mennyi ideig tétlenek.
- Tétlen (tranzakcióban): Ez azt jelenti, hogy a háttérprogram lekérdezést hajt végre, bár valójában tétlen, és valószínűleg a végső klienstől vár inputot.
- Tétlen tranzakcióban (megszakítva): Ez a feltétel megegyezik a folyamatban lévő üresjárattal. Az egyik nyilatkozat azonban hibába torkollott. Nyomon követhető attól függően, hogy mennyi ideig tétlen.
Azonosítsa a csatlakozási állapotokat:
A PostgreSQL katalógustáblák beépített nézetet nyújtanak a „pg_stat_activity” nézetben, hogy ellenőrizzék a statisztikákat arról, hogy egy link mit csinál, vagy mennyi idő telt el ebben az állapotban. Minden adatbázisra és minden csatlakozási állapotra vonatkozó statisztikák ellenőrzéséhez nyissa meg a lekérdező eszközt, és hajtsa végre az alábbi lekérdezést:
>> SELECT * FROM pg_stat_activity;
A lekérdezés eredményesen valósult meg, és a teljesítési jegyzet megjelent.
Az adatkimeneti oldal ellenőrzésekor talál egy táblázatot, amely több oszlopot tartalmaz, az alábbiak szerint. Ellenőrizheti a kapcsolatok állapotát az 'state' mező értékeinek ellenőrzésével.
A kimenet leegyszerűsítése és a kapcsolatok, állapotuk, felhasználók és kiszolgálóik áttekintése érdekében az alábbi módosított lekérdezést kell végrehajtani a lekérdező eszközben. Ez a lekérdezés csak a kapcsolatok rekordjainak 5 mezejét és a velük kapcsolatos konkrét adatokat jeleníti meg. A 'pid' oszlop a folyamatazonosítót jelenti. Az 'állapot' oszlop a folyamatok állapotát tartalmazza. A „felhasználónév” oszlop azonosítja azt a felhasználót, aki az adott folyamaton dolgozik. A „datname” oszlop meghatározza az adatbázis nevét, amelyen a tranzakció végrehajtásra került. A 'datid' oszlop az adatbázis-azonosítót jelenti.
>> SELECT pid, state, usename datname, datid, from pg_stat_activity;
A kimenet összesen 8 folyamatot rögzít. Az „állapot” oszlop azt mutatja, hogy jelenleg csak 3 folyamat működik. Az egyiket a Postgres alapértelmezett adatbázis, a másik kettőt az adatbázis 'teszt' tárolja. Ugyanakkor a 'Postgres felhasználó elvégezte ezeket a folyamatokat.
Határozza meg a tétlen kapcsolatokat:
Úgy tűnik, hogy az „állapot” az egyetlen érték, amelyet a fent említett eredmények között keresünk. Ezeket az információkat arra használjuk, hogy meghatározzuk, mely folyamatok vagy lekérdezések mely állapotokban vannak, és utána mélyebbre ásunk. Csökkenthetjük a keresett részleteket a lekérdezés finomításával, lehetővé téve számunkra, hogy beavatkozást készítsünk az adott kapcsolatra. Ezt úgy tehetjük meg, hogy csak a tétlen PID-eket választjuk a WHERE záradék és az adott PID-ek állapotának használatával. Azt is nyomon kell követnünk, hogy a link mennyi ideig nem aktív, és gondoskodnunk kell arról, hogy ne legyenek elhanyagolt linkjeink az erőforrásainkkal. Ennek eredményeként az alább átfogalmazott paranccsal csak azokat a rekordokat jelenítjük meg, amelyek relevánsak a jelenleg tétlen folyamatokhoz:
>> SELECT pid, usename, usesysid, datid, datname, application_name, backend_start, state_change, state FROM pg_stat_activity WHERE state = 'tétlen';
A lekérdezés csak 2 olyan adatrekordot hozott le, amelyek állapota "tétlen" volt a WHERE záradék használatával. Az eredmény megmutatja a 2 tétlen folyamatot, bizonyos információkkal együtt.
Tétlen kapcsolat megölése:
A tétlen kapcsolatok azonosítása után itt az ideje megölni őket. Miután a folyamatot várakozási állapotban vagy hosszabb ideig inaktívvá tettük, az egyszerű paranccsal egyszerűen leállíthatjuk a háttér-mechanizmust anélkül, hogy megzavarnánk a szerver tevékenységét. Meg kell adnunk a lekérdezésen belül az „id” folyamatot egy terminate függvényben.
>> SELECT pg_terminate_backend (7408);
A folyamatot csodálatosan megölték.
Most ellenőrizze a fennmaradó üresjárati kapcsolatokat az alább mellékelt lekérdezésből.
>> SELECT datid, felhasználónév, datname, pid, állapot FROM pg_stat_activity WHERE state = 'tétlen';
A kimenet csak 1 hátralévő folyamatot mutat, amely tétlen.
Következtetés:
Ne hagyjon ki egyetlen lépést sem, hogy hatékonyan megsemmisítse az inaktív kapcsolatokat a PostgreSQL adatbázisból.