Teljesítmény monitorozása a lekérdezéstár használatával

A KÖVETKEZŐKRE VONATKOZIK: Azure Database for PostgreSQL – Önálló kiszolgáló

Fontos

Azure Database for PostgreSQL – Az önálló kiszolgáló a kivezetési útvonalon van. Határozottan javasoljuk, hogy frissítsen az Azure Database for PostgreSQL rugalmas kiszolgálóra. A rugalmas Azure Database for PostgreSQL-kiszolgálóra való migrálással kapcsolatos további információkért lásd: Mi történik az önálló Azure Database for PostgreSQL-kiszolgálóval?

Az Azure Database for PostgreSQL Lekérdezéstár funkciója lehetővé teszi a lekérdezési teljesítmény időbeli nyomon követését. A Lekérdezéstár leegyszerűsíti a teljesítmény hibaelhárítását azáltal, hogy segít gyorsan megtalálni a leghosszabb ideig futó és a legtöbb erőforrás-igényes lekérdezést. A Lekérdezéstár automatikusan rögzíti a lekérdezések és a futtatókörnyezet statisztikáinak előzményeit, és megőrzi azokat a felülvizsgálathoz. Időablakok szerint választja el az adatokat, így láthatja az adatbázis használati mintáit. Az összes felhasználó, adatbázis és lekérdezés adatait egy azure_sys nevű adatbázisban tárolja a rendszer az Azure Database for PostgreSQL-példányban.

Fontos

Ne módosítsa a azure_sys adatbázist vagy sémáit. Ez megakadályozza, hogy a Lekérdezéstár és a kapcsolódó teljesítményfunkciók megfelelően működjön.

A Lekérdezéstár engedélyezése

A Lekérdezéstár egy bejelentkezési funkció, ezért alapértelmezés szerint nem aktív egy kiszolgálón. Az áruház globálisan engedélyezve van vagy le van tiltva egy adott kiszolgálón lévő összes adatbázis esetében, és nem kapcsolható be vagy ki adatbázisonként.

Lekérdezéstár engedélyezése az Azure Portal használatával

  1. Jelentkezzen be az Azure Portalra, és válassza ki az Azure Database for PostgreSQL-kiszolgálót.
  2. Válassza a Kiszolgálóparaméterek lehetőséget a menü Gépház szakaszában.
  3. Keresse meg a paramétert pg_qs.query_capture_mode .
  4. Állítsa be az értéket a mentésre és a mentésre.TOP

Várakozási statisztikák engedélyezése a lekérdezéstárban:

  1. Keresse meg a paramétert pgms_wait_sampling.query_capture_mode .
  2. Állítsa be az értéket a mentésre és a mentésre.ALL

Másik lehetőségként beállíthatja ezeket a paramétereket az Azure CLI használatával.

az postgres server configuration set --name pg_qs.query_capture_mode --resource-group myresourcegroup --server mydemoserver --value TOP
az postgres server configuration set --name pgms_wait_sampling.query_capture_mode --resource-group myresourcegroup --server mydemoserver --value ALL

Engedélyezze az első köteg adat 20 percig történő tárolását az azure_sys adatbázisban.

Információk a Lekérdezéstárban

A Lekérdezéstár két tárolóval rendelkezik:

  • Futtatókörnyezeti statisztikák tárolója a lekérdezés-végrehajtási statisztikák adatainak megőrzéséhez.
  • Várakozási statisztikák tárolója a várakozási statisztikák adatainak megőrzéséhez.

A Lekérdezéstár használatának gyakori forgatókönyvei a következők:

  • Annak meghatározása, hogy egy lekérdezés hány alkalommal lett végrehajtva egy adott időablakban
  • Egy lekérdezés átlagos végrehajtási idejének összehasonlítása az időablakokban a nagy eltérések megtekintéséhez
  • A leghosszabb ideig futó lekérdezések azonosítása az elmúlt X órában
  • Az erőforrásokra várakozó leggyakoribb N-lekérdezések azonosítása
  • Egy adott lekérdezés várakozási jellegének ismertetése

A helyhasználat minimalizálása érdekében a futtatókörnyezet-statisztikában lévő futtatókörnyezet végrehajtási statisztikái egy rögzített, konfigurálható időkereten vannak összesítve. Az ezekben az üzletekben lévő információk a lekérdezéstár nézeteinek lekérdezésével láthatók.

Lekérdezéstár adatainak elérése

A lekérdezéstár adatai a Postgres-kiszolgálón található azure_sys adatbázisban lesznek tárolva.

Az alábbi lekérdezés a Lekérdezéstárban lévő lekérdezésekkel kapcsolatos információkat adja vissza:

SELECT * FROM query_store.qs_view; 

Vagy a várakozási statisztikák lekérdezése:

SELECT * FROM query_store.pgms_wait_sampling_view;

Várakozási lekérdezések keresése

A várakozási eseménytípusok a különböző várakozási eseményeket hasonlóság alapján egyesítik a gyűjtőkben. A Lekérdezéstár megadja a várakozási esemény típusát, az adott várakozási esemény nevét és a kérdéses lekérdezést. Ha képes korrelálni ezt a várakozási információt a lekérdezés futtatókörnyezeti statisztikáival, mélyebben megismerheti, hogy mi járul hozzá a lekérdezési teljesítmény jellemzőihez.

Íme néhány példa arra, hogyan nyerhet további betekintést a számítási feladatokba a lekérdezéstár várakozási statisztikáinak használatával:

Megfigyelés Művelet
Magas zárolási várakozások Ellenőrizze az érintett lekérdezések lekérdezési szövegeit, és azonosítsa a célentitásokat. Keresse meg a Lekérdezéstárban az azonos entitást módosító, gyakran és/vagy nagy időtartamú lekérdezéseket. A lekérdezések azonosítása után fontolja meg az alkalmazáslogika módosítását az egyidejűség javítása érdekében, vagy használjon kevésbé korlátozó elkülönítési szintet.
Magas puffer I/O-várakozások Keresse meg a lekérdezéseket nagy számú fizikai olvasással a Lekérdezéstárban. Ha magas I/O-várakozással egyeznek meg a lekérdezésekkel, érdemes lehet indexet létrehozni a mögöttes entitáson, hogy a vizsgálatok helyett keressen. Ez minimálisra csökkentené a lekérdezések I/O-terhelését. Ellenőrizze a kiszolgáló teljesítmény Javaslatok a portálon, hogy vannak-e olyan indexjavaslatok a kiszolgálóhoz, amelyek optimalizálnák a lekérdezéseket.
Magas memória várakozások Keresse meg a legtöbb memóriaigényű lekérdezést a Lekérdezéstárban. Ezek a lekérdezések valószínűleg késleltetik az érintett lekérdezések további előrehaladását. Ellenőrizze a kiszolgáló teljesítmény Javaslatok a portálon, hogy vannak-e olyan indexjavaslatok, amelyek optimalizálnák ezeket a lekérdezéseket.

Konfigurációs lehetőségek

Ha a Lekérdezéstár engedélyezve van, 15 perces összesítési időszakokban menti az adatokat, ablakonként legfeljebb 500 különböző lekérdezést.

A lekérdezéstár paramétereinek konfigurálásához az alábbi lehetőségek állnak rendelkezésre.

Paraméter Leírás Alapértelmezett Tartomány
pg_qs.query_capture_mode Meghatározza, hogy mely utasítások legyenek nyomon követve. Nincs none, top, all
pg_qs.max_query_text_length Beállítja a menthető lekérdezések maximális hosszát. A hosszabb lekérdezések csonkulnak. 6000 100 – 10K
pg_qs.retention_period_in_days Beállítja a megőrzési időtartamot. 7 1 - 30
pg_qs.track_utility Beállítja, hogy a segédprogramparancsok nyomon legyenek-e követve ekkor be- és kikapcsolt

A következő beállítások kifejezetten a várakozási statisztikákra vonatkoznak.

Paraméter Leírás Alapértelmezett Tartomány
pgms_wait_sampling.query_capture_mode Beállítja, hogy mely utasítások legyenek nyomon követve a várakozási statisztikákhoz. Nincs nincs, minden
Pgms_wait_sampling.history_period Állítsa be a gyakoriságot ezredmásodpercben, ahol a rendszer mintavételezi a várakozási eseményeket. 100 1-600000

Feljegyzés

pg_qs.query_capture_mode felülírja a pgms_wait_sampling.query_capture_mode módot. Ha pg_qs.query_capture_mode nincs, a pgms_wait_sampling.query_capture_mode beállításnak nincs hatása.

Az Azure Portal vagy az Azure CLI használatával kérhet le vagy állíthat be másik értéket egy paraméterhez.

Nézetek és függvények

A Lekérdezéstár megtekintése és kezelése az alábbi nézetek és függvények használatával. A PostgreSQL nyilvános szerepkörben bárki megtekintheti az adatokat a Lekérdezéstárban. Ezek a nézetek csak az azure_sys adatbázisban érhetők el.

A lekérdezések normalizálása a konstansok és konstansok eltávolítása után a szerkezetük alapján normalizálódik. Ha két lekérdezés azonos, kivéve a literális értékeket, akkor ugyanazzal a kivonatokkal rendelkeznek.

query_store.qs_view

Ez a nézet lekérdezési szöveges adatokat ad vissza a Lekérdezéstárban. Minden különálló query_text egy sor van. Az adatok nem érhetők el a portál Intelligens teljesítmény szakaszán, az API-kon vagy a parancssori felületen – de az adatok a azure_sys való csatlakozással és a "query_store.query_texts_view" lekérdezésével érhetők el.

Név Típus Hivatkozások Leírás
runtime_stats_entry_id bigint Azonosító a runtime_stats_entries táblából
user_id Oid pg_authid.oid Az utasítást végrehajtó felhasználó objektumazonosítója
db_id Oid pg_database.oid Az az adatbázis OID-ja, amelyben az utasítást végrehajtották
query_id bigint Az utasítás elemzési fájából kiszámított belső kivonatkód
query_sql_text Varchar(10000) Egy reprezentatív nyilatkozat szövege. Az azonos struktúrájú különböző lekérdezések csoportosítva vannak; ez a szöveg a fürt első lekérdezésének szövege.
plan_id bigint A lekérdezésnek megfelelő terv azonosítója, amely még nem érhető el
start_time időbélyeg A lekérdezéseket időgyűjtők összesítik – a gyűjtők időtartománya alapértelmezés szerint 15 perc. Ez a bejegyzés időgyűjtőjének megfelelő kezdési időpont.
end_time időbélyeg A bejegyzés időgyűjtőjének megfelelő befejezési idő.
Hívások bigint A lekérdezés végrehajtásának száma
total_time dupla pontosság Lekérdezések teljes végrehajtási ideje ezredmásodpercben
min_time dupla pontosság A lekérdezések minimális végrehajtási ideje ezredmásodpercben
max_time dupla pontosság A lekérdezés végrehajtásának maximális időtartama ezredmásodpercben
mean_time dupla pontosság A lekérdezések átlagos végrehajtási ideje ezredmásodpercben
stddev_time dupla pontosság A lekérdezés végrehajtási idejének szórása ezredmásodpercben
megtartása v bigint Az utasítás által lekért vagy érintett sorok teljes száma
shared_blks_hit bigint A megosztott blokkgyorsítótár-találatok teljes száma az utasítás szerint
shared_blks_read bigint Az utasítás által beolvasott megosztott blokkok teljes száma
shared_blks_dirtied bigint Az utasítás által koszosított megosztott blokkok teljes száma
shared_blks_written bigint Az utasítás által írt megosztott blokkok teljes száma
local_blks_hit bigint A helyi blokkgyorsítótár-találatok teljes száma az utasítás szerint
local_blks_read bigint Az utasítás által beolvasott helyi blokkok teljes száma
local_blks_dirtied bigint Az utasítás által szennyezett helyi blokkok teljes száma
local_blks_written bigint Az utasítás által írt helyi blokkok teljes száma
temp_blks_read bigint Az utasítás által beolvasott ideiglenes blokkok teljes száma
temp_blks_written bigint Az utasítás által írt ideiglenes blokkok teljes száma
blk_read_time dupla pontosság Az utasítás olvasási blokkokkal töltött teljes ideje ezredmásodpercben (ha track_io_timing engedélyezve van, egyébként nulla)
blk_write_time dupla pontosság Az utasítás blokkok írásával töltött teljes ideje ezredmásodpercben (ha track_io_timing engedélyezve van, egyébként nulla)

query_store.query_texts_view

Ez a nézet lekérdezési szöveges adatokat ad vissza a Lekérdezéstárban. Minden különálló query_text egy sor van.

Név Típus Leírás
query_text_id bigint A query_texts tábla azonosítója
query_sql_text Varchar(10000) Egy reprezentatív nyilatkozat szövege. Az azonos struktúrájú különböző lekérdezések csoportosítva vannak; ez a szöveg a fürt első lekérdezésének szövege.

query_store.pgms_wait_sampling_view

Ez a nézet lekérdezési szöveges adatokat ad vissza a Lekérdezéstárban. Minden különálló query_text egy sor van. Az adatok nem érhetők el a portál Intelligens teljesítmény szakaszán, az API-kon vagy a parancssori felületen – de az adatok a azure_sys való csatlakozással és a "query_store.query_texts_view" lekérdezésével érhetők el.

Név Típus Hivatkozások Leírás
user_id Oid pg_authid.oid Az utasítást végrehajtó felhasználó objektumazonosítója
db_id Oid pg_database.oid Az az adatbázis OID-ja, amelyben az utasítást végrehajtották
query_id bigint Az utasítás elemzési fájából kiszámított belső kivonatkód
event_type text Az az eseménytípus, amelyre a háttérrendszer várakozik
esemény text A várakozási esemény neve, ha a háttérrendszer jelenleg várakozik
Hívások Egész A rögzített esemény száma

Functions

Query_store.qs_reset() eredménye érvénytelen

qs_reset elveti a Lekérdezéstár által eddig összegyűjtött összes statisztikát. Ezt a függvényt csak a kiszolgálói rendszergazdai szerepkör hajthatja végre.

Query_store.staging_data_reset() eredménye érvénytelen

staging_data_reset Elveti a Lekérdezéstár által a memóriában összegyűjtött összes statisztikát (azaz a memóriában lévő adatokat, amelyeket még nem öblített ki az adatbázisba). Ezt a függvényt csak a kiszolgálói rendszergazdai szerepkör hajthatja végre.

Azure Monitor

Az Azure Database for PostgreSQL integrálva van az Azure Monitor diagnosztikai beállításaival. A diagnosztikai beállítások lehetővé teszik, hogy a Postgres-naplókat JSON formátumban küldje el az Azure Monitor-naplókba elemzéshez és riasztáshoz, az Event Hubs streameléséhez és az Azure Storage-ba archiváláshoz.

Fontos

Ez a diagnosztikai funkció csak az Általános célú és memóriaoptimalizált tarifacsomagokban érhető el.

Diagnosztikai beállítások konfigurálása

A Postgres-kiszolgáló diagnosztikai beállításait az Azure Portal, a CLI, a REST API és a PowerShell használatával engedélyezheti. A konfigurálni kívánt naplókategóriák a QueryStoreRuntimeStatistics és a QueryStoreWaitStatistics.

Erőforrásnaplók engedélyezése az Azure Portalon:

  1. A portálon nyissa meg a Diagnosztikai Gépház a Postgres-kiszolgáló navigációs menüjében.
  2. Válassza a Diagnosztikai beállítás hozzáadása lehetőséget.
  3. Nevezze el ezt a beállítást.
  4. Válassza ki az előnyben részesített végpontot (tárfiók, eseményközpont, log analytics).
  5. Válassza ki a QueryStoreRuntimeStatistics és a QueryStoreWaitStatistics naplótípusokat.
  6. Mentse a beállítást.

Ha engedélyezni szeretné ezt a beállítást a PowerShell, a CLI vagy a REST API használatával, tekintse meg a diagnosztikai beállításokról szóló cikket.

JSON-naplóformátum

Az alábbi táblázatok a két naplótípus mezőit ismertetik. A választott kimeneti végponttól függően a benne foglalt mezők és azok megjelenési sorrendje eltérő lehet.

QueryStoreRuntimeStatistics

Mező Leírás
TimeGenerated [UTC] Időbélyeg, amikor a naplót UTC-ben rögzítették
ResourceId A Postgres-kiszolgáló Azure-erőforrás-URI-ja
Kategória QueryStoreRuntimeStatistics
OperationName QueryStoreRuntimeStatisticsEvent
LogicalServerName_s Postgres-kiszolgáló neve
runtime_stats_entry_id_s Azonosító a runtime_stats_entries táblából
user_id_s Az utasítást végrehajtó felhasználó objektumazonosítója
db_id_s Az az adatbázis OID-ja, amelyben az utasítást végrehajtották
query_id_s Az utasítás elemzési fájából kiszámított belső kivonatkód
end_time_s A bejegyzés időgyűjtőjének megfelelő befejezési idő
calls_s A lekérdezés végrehajtásának száma
total_time_s Lekérdezések teljes végrehajtási ideje ezredmásodpercben
min_time_s A lekérdezések minimális végrehajtási ideje ezredmásodpercben
max_time_s A lekérdezés végrehajtásának maximális időtartama ezredmásodpercben
mean_time_s A lekérdezések átlagos végrehajtási ideje ezredmásodpercben
ResourceGroup Az erőforráscsoport
SubscriptionId Saját előfizetés azonosítója
ResourceProvider Microsoft.DBForPostgreSQL
Erőforrás Postgres-kiszolgáló neve
ResourceType Servers

QueryStoreWaitStatistics

Mező Leírás
TimeGenerated [UTC] Időbélyeg, amikor a naplót UTC-ben rögzítették
ResourceId A Postgres-kiszolgáló Azure-erőforrás-URI-ja
Kategória QueryStoreWaitStatistics
OperationName QueryStoreWaitEvent
user_id_s Az utasítást végrehajtó felhasználó objektumazonosítója
db_id_s Az az adatbázis OID-ja, amelyben az utasítást végrehajtották
query_id_s A lekérdezés belső kivonatkódja
calls_s A rögzített esemény száma
event_type_s Az az eseménytípus, amelyre a háttérrendszer várakozik
event_s A várakozási esemény neve, ha a háttérrendszer jelenleg várakozik
start_time_t Esemény kezdési időpontja
end_time_s Esemény befejezési ideje
LogicalServerName_s Postgres-kiszolgáló neve
ResourceGroup Az erőforráscsoport
SubscriptionId Saját előfizetés azonosítója
ResourceProvider Microsoft.DBForPostgreSQL
Erőforrás Postgres-kiszolgáló neve
ResourceType Servers

Korlátozások és ismert problémák

  • Ha egy PostgreSQL-kiszolgáló default_transaction_read_only paraméterrel rendelkezik, a Lekérdezéstár nem tud adatokat rögzíteni.
  • A Lekérdezéstár funkció megszakadhat, ha hosszú Unicode-lekérdezésekkel (>= 6000 bájt) találkozik.
  • Az olvasási replikák a lekérdezéstár adatait replikálják az elsődleges kiszolgálóról. Ez azt jelenti, hogy az olvasási replika lekérdezéstára nem nyújt statisztikákat az olvasási replikán futtatott lekérdezésekről.

Következő lépések