Szintézis, mint az egyik módszer a PostgreSQL teljesítményének javítására

Szintézis, mint az egyik módszer a PostgreSQL teljesítményének javítására

Filozófiai bevezetés

Mint tudják, csak két módszer létezik a problémák megoldására:

  1. Az elemzési módszer vagy a levonás módszere, vagy az általánostól a konkrétig.
  2. Szintézismódszer vagy indukciós módszer, vagy az egyeditől az általánosig.

Az „adatbázis teljesítményének javítása” probléma megoldása érdekében ez így nézhet ki.

Elemzés — a problémát külön részekre bontva elemezzük, és ezek megoldásával igyekszünk az adatbázis egészének teljesítményét javítani.

A gyakorlatban az elemzés valahogy így néz ki:

  • Probléma történik (teljesítmény-incidens)
  • Statisztikai információk gyűjtése az adatbázis állapotáról
  • Szűk keresztmetszetek keresése
  • A problémákat a szűk keresztmetszetekből oldjuk meg

Adatbázis szűk keresztmetszetek - infrastruktúra (CPU, memória, lemezek, hálózat, operációs rendszer), beállítások (postgresql.conf), lekérdezések:

Infrastruktúra: Egy mérnök befolyásának és változásának lehetősége szinte nulla.

Adatbázis beállítások: a változtatási lehetőségek valamivel nagyobbak, mint az előző esetben, de általában még mindig elég nehézkesek, főleg felhőben.

kérelmek az adatbázisba: csak mozgástér.

szintézis — javítjuk az egyes részek teljesítményét, arra számítva, hogy ennek eredményeként javulni fog az adatbázis teljesítménye.

Lírai bevezető, vagy miért van szükség erre

Mi a folyamat a teljesítményincidensek megoldására, ha az adatbázis teljesítményét nem figyeli a rendszer:

Ügyfél – „Nálunk minden rossz, túl sokáig tart, tegyen valami jót értünk”
Mérnök - "Ez milyen rossz?"
A vevő – „most így van (egy órája, tegnap, utoljára volt), lassan”
Mérnök – „mikor volt jó?”
Ügyfél – „egy hete (két hete) nem volt rossz. "(Szerencse)
Ügyfél – „Nem emlékszem, mikor volt jó, de most rossz” (Rendszeres válasz)

Az eredmény egy klasszikus kép:

Szintézis, mint az egyik módszer a PostgreSQL teljesítményének javítására

Ki hibáztatható és mit tegyen?

A kérdés első részére a legkönnyebb válaszolni – mindig a DBA mérnöke a hibás.

A második részt szintén nem túl nehéz megválaszolni - egy adatbázis-teljesítmény-figyelő rendszert kell megvalósítania.

Felmerül az első kérdés - mit kell figyelni?

1. út. MINDENT figyelni fogunk

Szintézis, mint az egyik módszer a PostgreSQL teljesítményének javítására

CPU terhelés, lemez olvasási/írási műveletek száma, lefoglalt memória mérete és további megatonna különböző számlálók, amelyeket bármely többé-kevésbé működő megfigyelő rendszer képes biztosítani.

Az eredmény egy csomó grafikon, összefoglaló táblázat és folyamatos e-mail értesítések, valamint a 100%-ban elfoglalt mérnök egy csomó azonos jegyet megold, de általában a szabványos megfogalmazással - „Ideiglenes probléma. Nincs szükség intézkedésre." De mindenki elfoglalt, és mindig van mit mutatni az ügyfélnek – a munka javában folyik.

2. mód. Csak azt figyelje, amire szükség van, és azt, amire nincs szükség, azt nem kell figyelni

Kicsit másként csak entitásokat és eseményeket figyelhet meg:

  • Melyik DBA mérnök befolyásolhatja
  • Amihez létezik egy műveleti algoritmus, amikor egy esemény bekövetkezik vagy egy entitás megváltozik.

E feltevés alapján és emlékezve "Filozófiai bevezetés"a rendszeres ismétlés elkerülése érdekében"Lírai bevezető, vagy miért van szükség erre„Célszerű lenne figyelemmel kísérni az egyes lekérdezések teljesítményét optimalizálás és elemzés céljából, ami végső soron a teljes adatbázis teljesítményének javulását eredményezi.

De az adatbázis általános teljesítményét befolyásoló nehéz lekérdezések javításához először meg kell találnia azt.

Tehát két egymással összefüggő kérdés merül fel:

  • mely kérést nehéznek tartják
  • hogyan kereshet nehéz kérdésekre.

Nyilvánvaló, hogy a nehéz lekérdezés olyan lekérdezés, amely sok operációs rendszer erőforrást használ az eredmény eléréséhez.

Térjünk át a második kérdésre – hogyan keressünk, majd figyeljünk a nehéz lekérdezésekre?

Milyen lekérdezésfigyelő képességekkel rendelkezik a PostgreSQL?

Az Oracle-hez képest kevés a lehetőség, de valamit mégis lehet tenni.

Szintézis, mint az egyik módszer a PostgreSQL teljesítményének javítására

PG_STAT_STATEMENTS

A PostgreSQL-ben végzett nehéz lekérdezések kereséséhez és figyeléséhez a szabványos pg_stat_statements kiterjesztést szánjuk.

A bővítmény telepítése után egy azonos nevű nézet jelenik meg a céladatbázisban, amelyet monitorozási célokra kell használni.

Célozza meg a pg_stat_statements oszlopokat a megfigyelőrendszer felépítéséhez:

  • queryid Az operátor értelmezőfájából számított belső hash kód
  • max_time A nyilatkozatra fordított maximális idő ezredmásodpercben

E két oszlop statisztikai adatainak felhalmozásával és felhasználásával fel lehet építeni egy monitoring rendszert.

A pg_stat_statements használata a PostgreSQL teljesítményének figyelésére

Szintézis, mint az egyik módszer a PostgreSQL teljesítményének javítására

A lekérdezés teljesítményének figyeléséhez használja a következőket:
A céladatbázis oldalán - pg_stat_statements nézet
Oldalról szerver és monitorozó adatbázisok - bash szkriptek és szolgáltatástáblák halmaza.

1. szakasz – statisztikai adatok gyűjtése

A cron megfigyelő gazdagépen rendszeresen elindul egy parancsfájl, amely a pg_stat_statements nézet tartalmát a céladatbázisból a megfigyelési adatbázis pg_stat_history táblájába másolja.

Ez létrehozza az egyes lekérdezések végrehajtásának előzményeit, amelyek felhasználhatók teljesítményjelentések generálására és metrikák konfigurálására.

2. szakasz – teljesítménymutatók beállítása

Az összegyűjtött adatok alapján kiválasztjuk azokat a lekérdezéseket, amelyek végrehajtása a kliens (alkalmazás) számára a legkritikusabb/legfontosabb. Az ügyféllel egyetértésben a queryid és max_time mezők használatával állítjuk be a teljesítménymutatók értékeit.

Eredmény – a teljesítményfigyelés kezdete

  1. A megfigyelési parancsfájl futás közben ellenőrzi a konfigurált teljesítménymérőket úgy, hogy összehasonlítja a metrika max_time értékét a céladatbázis pg_stat_statements nézetének értékével.
  2. Ha a céladatbázisban lévő érték meghaladja a metrika értékét, figyelmeztetés generálódik (incidens a jegyrendszerben)

További lehetőség 1

Tervelőzmények lekérdezése

A teljesítménnyel kapcsolatos incidensek későbbi megoldása érdekében érdemes a lekérdezés-végrehajtási terveket korábban megváltoztatni.

A log_query szolgáltatástábla az előzmények tárolására szolgál. A táblázat a betöltött PostgreSQL naplófájl elemzésekor töltődik fel. Mivel a naplófájl a pg_stat_statements nézettől eltérően a teljes szöveget tartalmazza a végrehajtási paraméterek értékeivel, nem pedig normalizált szöveget, lehetőség van nem csak a kérések időpontjának és időtartamának naplózására, hanem az aktuális végrehajtási tervek tárolására is. idő.

További lehetőség 2

Folyamatos teljesítményjavító folyamat

Az egyes lekérdezések figyelésének általánosságban nem az a célja, hogy megoldja az adatbázis egészének teljesítményének folyamatos javítását, mivel csak az egyes lekérdezések esetén figyeli és oldja meg a teljesítményproblémákat. Azonban kiterjesztheti a módszert, és konfigurálhatja a megfigyelési lekérdezéseket az összes adatbázishoz.

Ehhez további teljesítménymutatókat kell megadnia:

  • Az utolsó napokra
  • A bázisidőszakra

A szkript kiválasztja a lekérdezéseket a céladatbázis pg_stat_statements nézetéből, és összehasonlítja a max_time értéket az átlagos max_time értékkel, első esetben az utolsó napokra vagy a kiválasztott időszakra (alapvonalra), a második esetben.

Így bármely kérés teljesítményromlása esetén a rendszer automatikusan figyelmeztetést generál, a jelentések manuális elemzése nélkül.

Mi köze ehhez a szintézisnek?

A leírt megközelítésben, ahogy azt a szintézis módszer is sugallja, a rendszer egyes részeinek javításával a rendszer egészét javítjuk.

  • Adatbázis által végrehajtott lekérdezés – absztrakt
  • Módosított kérés – antitézis
  • A rendszer állapotának megváltoztatása - szintézis

Szintézis, mint az egyik módszer a PostgreSQL teljesítményének javítására

Rendszerfejlesztés

  • Az összegyűjtött statisztikák bővítése előzmények hozzáadásával a pg_stat_activity rendszernézethez
  • Az összegyűjtött statisztikák bővítése a lekérdezésekben részt vevő egyes táblák statisztikáinak előzményeinek hozzáadásával
  • Integráció az AWS felhőfigyelő rendszerrel
  • És mégis kitalálhat valamit...

Forrás: will.com

Vásároljon megbízható tárhelyet DDoS védelemmel, VPS VDS szerverekkel rendelkező webhelyekhez 🔥 Vásároljon megbízható weboldal tárhelyet DDoS védelemmel, VPS VDS szerverekkel | ProHoster