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
- Jelentkezzen be az Azure Portalra, és válassza ki az Azure Database for PostgreSQL-kiszolgálót.
- Válassza a Kiszolgálóparaméterek lehetőséget a menü Gépház szakaszában.
- Keresse meg a paramétert
pg_qs.query_capture_mode
. - Á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:
- Keresse meg a paramétert
pgms_wait_sampling.query_capture_mode
. - Á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:
- A portálon nyissa meg a Diagnosztikai Gépház a Postgres-kiszolgáló navigációs menüjében.
- Válassza a Diagnosztikai beállítás hozzáadása lehetőséget.
- Nevezze el ezt a beállítást.
- Válassza ki az előnyben részesített végpontot (tárfiók, eseményközpont, log analytics).
- Válassza ki a QueryStoreRuntimeStatistics és a QueryStoreWaitStatistics naplótípusokat.
- 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
- További információ azokról a forgatókönyvekről, ahol a Lekérdezéstár különösen hasznos lehet.
- További információ a Lekérdezéstár használatának ajánlott eljárásairól.