Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: Azure Database for PostgreSQL - Flexible Server
Query store is een functie in azure Database for PostgreSQL flexibele server die een manier biedt om queryprestaties in de loop van de tijd bij te houden. Query Store vereenvoudigt het oplossen van prestatieproblemen door u te helpen snel de langst lopende en meest resource-intensieve query's te vinden. Query Store legt automatisch een geschiedenis van query's en runtimestatistieken vast en bewaart deze voor uw beoordeling. Hiermee worden de gegevens gesegmenteerd op tijd, zodat u tijdelijke gebruikspatronen kunt zien. Gegevens voor alle gebruikers, databases en query's worden opgeslagen in een database met de naam azure_sys
in het flexibele serverexemplaren van Azure Database for PostgreSQL.
Query store inschakelen
Query Store is beschikbaar voor gebruik zonder extra kosten. Het is een opt-in-functie, dus deze is niet standaard ingeschakeld op een server. Querystore kan globaal worden ingeschakeld of uitgeschakeld voor alle databases op een bepaalde server en kan niet per database worden ingeschakeld of uitgeschakeld.
Belangrijk
Schakel querystore niet in op de prijscategorie Burstable, omdat dit invloed zou hebben op de prestaties.
Query store inschakelen in Azure Portal
- Meld u aan bij de Azure portal en selecteer uw flexibele serverexemplaar van Azure Database for PostgreSQL.
- Selecteer Serverparameters in de sectie Instellingen van het menu.
- Zoek de
pg_qs.query_capture_mode
parameter. - Stel de waarde in op
top
ofall
, afhankelijk van of u query's op het hoogste niveau of geneste query's wilt bijhouden (de query's die in een functie of procedure worden uitgevoerd) en selecteer Opslaan. Het duurt maximaal 20 minuten voordat de eerste batch gegevens in deazure_sys
database kan worden bewaard.
Wachtsampling van querystore inschakelen
- Zoek de
pgms_wait_sampling.query_capture_mode
parameter. - Stel de waarde in op
all
en sla deze op.
Informatie in het queryarchief
Query Store bestaat uit twee winkels:
- Een runtimestatistiekenarchief voor het persistent maken van de gegevens van de queryuitvoeringsstatistieken.
- Een wachtstatistiekenarchief voor persistente informatie over wachtstatistieken.
Veelvoorkomende scenario's voor het gebruik van querystore zijn:
- Bepalen hoe vaak een query in een bepaald tijdvenster is uitgevoerd.
- Vergelijk de gemiddelde uitvoeringstijd van een query in tijdvensters om grote variaties te zien.
- Het identificeren van langst lopende query's in de afgelopen uren.
- De belangrijkste N-query's identificeren die op resources wachten.
- Inzicht in de aard van de wachttijden voor een bepaalde query.
Om het ruimtegebruik te minimaliseren, worden de uitvoeringsstatistieken van runtime in het archief met runtimestatistieken geaggregeerd in een vast, configureerbaar tijdvenster. De informatie in deze gegevensopslag kan worden opgevraagd met behulp van visualisaties.
Toegang tot queryopslaggegevens
Queryopslaggegevens worden opgeslagen in de azure_sys
database op uw Azure Database voor PostgreSQL flexibele serverinstantie.
De volgende query retourneert informatie over query's die zijn vastgelegd in het queryarchief:
SELECT * FROM query_store.qs_view;
Deze query retourneert informatie over wachtstatistieken:
SELECT * FROM query_store.pgms_wait_sampling_view;
Wachtqueries zoeken
Wachtgebeurtenistypen combineren verschillende wachtgebeurtenissen in groepen op basis van gelijkenis. Het Query Store bevat het wachttype van de gebeurtenis, de specifieke naam van de wachttijdengebeurtenis en de query in kwestie. Als u deze wachtinformatie kunt correleren met de statistieken van de queryruntime, krijgt u meer inzicht in wat bijdraagt aan de prestatiekenmerken van query's.
Hier volgen enkele voorbeelden van hoe u meer inzicht krijgt in uw workload met behulp van de wachtstatistieken in querystore:
Observatie | Actie |
---|---|
Hoge vergrendelingswachttijden | Controleer de queryteksten voor de betrokken query's en identificeer de doelentiteiten. Zoek in het queryarchief naar andere query's die regelmatig worden uitgevoerd en/of een hoge duur hebben en dezelfde entiteit wijzigen. Nadat u deze query's hebt geïdentificeerd, kunt u overwegen de toepassingslogica te wijzigen om gelijktijdigheid te verbeteren of een minder beperkend isolatieniveau te gebruiken. |
Buffer-IO-wachttijden met hoge belasting | Zoek de query's met een groot aantal fysieke leesbewerkingen in het queryarchief. Als ze overeenkomen met de query's met hoge IO-wachttijden, kunt u overwegen om de functie voor automatisch afstemmen van indexen in te schakelen om te zien of het kan worden aanbevolen om een aantal indexen te maken die het aantal fysieke leesbewerkingen voor deze query's kunnen verminderen. |
Hoge geheugenwachttijden | Vind de queries die het meest geheugen verbruiken in de query store. Deze query's vertragen waarschijnlijk verdere voortgang van de betrokken query's. |
Configuratieopties
Wanneer het queryarchief is ingeschakeld, worden gegevens opgeslagen in aggregatievensters van lengte die worden bepaald door de serverparameter pg_qs.interval_length_minutes (standaard ingesteld op 15 minuten). Voor elk venster worden maximaal 500 afzonderlijke query's per venster opgeslagen. Kenmerken die de uniekheid van elke query onderscheiden, zijn user_id (id van de gebruiker die de query uitvoert), db_id (id van de database in de context waarin de query wordt uitgevoerd) en query_id (een geheel getal dat de uitgevoerde query uniek identificeert). Als het aantal afzonderlijke query's gedurende het geconfigureerde interval 500 bereikt, worden 5% van de vastgelegde query's vrijgegeven om ruimte te maken voor meer. De toewijzingen die eerst zijn vrijgegeven, zijn degene die het minst aantal keren zijn uitgevoerd.
De volgende opties zijn beschikbaar voor het configureren van Query Store-parameters:
Parameter | Beschrijving | standaard | Bereik |
---|---|---|---|
pg_qs.interval_length_minutes (*) |
Stel het interval in minuten vast voor de queryopslag. Definieert de frequentie van gegevenspersistentie. | 15 |
1 - 30 |
pg_qs.is_enabled_fs |
Alleen intern gebruik: deze parameter wordt gebruikt als schakeloptie voor het overschrijven van functies. Als dit wordt weergegeven als uitgeschakeld, is querystore uitgeschakeld, ondanks de waarde die is ingesteld voor pg_qs.query_capture_mode . |
on |
on , off |
pg_qs.max_plan_size |
Maximaal aantal bytes dat wordt opgeslagen in queryplantekst door query store; langere plannen worden afgekort. | 7500 |
100 - 10000 |
pg_qs.max_query_text_length |
Maximale querylengte die kan worden opgeslagen; langere queries worden afgekapt. | 6000 |
100 - 10000 |
pg_qs.parameters_capture_mode |
Hiermee wordt aangegeven of en wanneer querypositieparameters moeten worden vastgelegd. | capture_parameterless_only |
capture_parameterless_only , capture_first_sample |
pg_qs.query_capture_mode |
Verklaringen om te volgen. | none |
none , top , all |
pg_qs.retention_period_in_days |
Bewaarperiode in dagen voor query store. Oudere gegevens worden automatisch verwijderd. | 7 |
1 - 30 |
pg_qs.store_query_plans |
Of queryplannen moeten worden opgeslagen in de query-opslagruimte. | off |
on , off |
pg_qs.track_utility |
Of querystore hulpprogrammaopdrachten moet bijhouden. | on |
on , off |
(*) Statische serverparameter waarvoor een server moet worden opgestart voordat een wijziging in de waarde ervan van kracht wordt.
Opmerking
Als u de waarde voor pg_qs.max_query_text_length
de parameter wijzigt, blijft de tekst van alle query's die zijn vastgelegd voordat u de wijziging aanbrengt, dezelfde query_id en sql_query_text gebruiken. Het kan de indruk geven dat de nieuwe waarde niet van kracht wordt, maar voor query's die niet eerder zijn vastgelegd in het queryarchief, ziet u dat de querytekst de zojuist geconfigureerde maximumlengte gebruikt. Dit is standaard en wordt uitgelegd in Weergaven en functies. Als u query_store.qs_reset uitvoert, worden alle gegevens verwijderd die tot nu toe zijn vastgelegd in het queryarchief, inclusief de tekst die is vastgelegd voor elke query-id en als een van deze query's opnieuw wordt uitgevoerd, wordt de zojuist geconfigureerde maximumlengte toegepast op de tekst die wordt vastgelegd.
De volgende opties zijn specifiek van toepassing op wachtstatistieken:
Parameter | Beschrijving | standaard | Bereik |
---|---|---|---|
pgms_wait_sampling.history_period |
Frequentie, in milliseconden, waarbij wachtgebeurtenissen worden bemonsterd. | 100 |
1 - 600000 |
pgms_wait_sampling.is_enabled_fs |
Alleen intern gebruik: deze parameter wordt gebruikt als schakeloptie voor het overschrijven van functies. Als dit wordt weergegeven als off , wachtsampling is uitgeschakeld ondanks de waarde die is ingesteld voor pgms_wait_sampling.query_capture_mode . |
on |
on , off |
pgms_wait_sampling.query_capture_mode |
Welke verklaringen de pgms_wait_sampling extensie moet bijhouden. |
none |
none , all |
Opmerking
pg_qs.query_capture_mode
pgms_wait_sampling.query_capture_mode
vervangt . Als pg_qs.query_capture_mode
dat het is none
, heeft de pgms_wait_sampling.query_capture_mode
instelling geen effect.
Gebruik Azure Portal om een andere waarde voor een parameter op te halen of in te stellen.
Weergaven en functies
U kunt query's uitvoeren op de gegevens die zijn vastgelegd door het queryarchief en of deze verwijderen met behulp van enkele weergaven en functies die beschikbaar zijn in het query_store
schema van de azure_sys
database. Iedereen in de openbare PostgreSQL-rol kan deze weergaven gebruiken om de gegevens in het queryarchief te bekijken. Deze weergaven zijn alleen beschikbaar in de azure_sys-database .
Queries worden genormaliseerd door naar hun structuur te kijken en alles wat niet semantisch significant is, zoals letterlijke waarden, constanten, aliassen of verschillen in hoofdletters, te negeren.
Als twee query's s semantisch identiek zijn, zelfs als ze verschillende aliassen gebruiken voor dezelfde kolommen en tabellen waarnaar wordt verwezen, worden ze geïdentificeerd met dezelfde query_id. Als twee query's alleen verschillen in de letterlijke waarden die in deze query's worden gebruikt, worden ze ook geïdentificeerd met dezelfde query_id. Voor query's die zijn geïdentificeerd met dezelfde query_id, is het sql_query_text dat van de query die het eerst is uitgevoerd sinds de queryopslag begon met het registreren van activiteit, of sinds de laatste keer dat de opgeslagen gegevens zijn verwijderd omdat de functie query_store.qs_reset is uitgevoerd.
Hoe query normalisatie werkt
Hier volgen enkele voorbeelden om te illustreren hoe deze normalisatie werkt:
Stel dat u een tabel maakt met de volgende instructie:
create table tableOne (columnOne int, columnTwo int);
U schakelt Query Store-gegevensverzameling in en één of meerdere gebruikers voeren de volgende query's uit, in deze exacte volgorde:
select * from tableOne;
select columnOne, columnTwo from tableOne;
select columnOne as c1, columnTwo as c2 from tableOne as t1;
select columnOne as "column one", columnTwo as "column two" from tableOne as "table one";
Alle vorige query's delen dezelfde query_id. En de tekst die Query Store bewaart, is die van de eerste query die wordt uitgevoerd na het inschakelen van gegevensverzameling. Daarom zou het zijn select * from tableOne;
.
De volgende set query's komt niet overeen met de vorige set query's zodra ze genormaliseerd zijn, omdat de WHERE-clausule ze semantisch anders maakt.
select columnOne as c1, columnTwo as c2 from tableOne as t1 where columnOne = 1 and columnTwo = 1;
select * from tableOne where columnOne = -3 and columnTwo = -3;
select columnOne, columnTwo from tableOne where columnOne = '5' and columnTwo = '5';
select columnOne as "column one", columnTwo as "column two" from tableOne as "table one" where columnOne = 7 and columnTwo = 7;
Alle query's in deze laatste set delen echter dezelfde query_id en de tekst die wordt gebruikt om ze allemaal te identificeren, is dat van de eerste query in de batch select columnOne as c1, columnTwo as c2 from tableOne as t1 where columnOne = 1 and columnTwo = 1;
.
Ten slotte vindt u hieronder enkele query's die niet overeenkomen met de query_id van de query's in de vorige batch en de reden waarom ze niet:
Query:
select columnTwo as c2, columnOne as c1 from tableOne as t1 where columnOne = 1 and columnTwo = 1;
Reden om niet overeen te komen: Lijst met kolommen verwijst naar dezelfde twee kolommen (columnOne en ColumnTwo), maar de volgorde waarin ze worden verwezen, wordt omgekeerd, van columnOne, ColumnTwo
in de vorige batch naar ColumnTwo, columnOne
in deze query.
Query:
select * from tableOne where columnTwo = 25 and columnOne = 25;
Reden om niet overeen te komen: de volgorde waarin de uitdrukkingen die in de WHERE-uitdrukking worden geëvalueerd, omgekeerd is van columnOne = ? and ColumnTwo = ?
in de vorige batch naar ColumnTwo = ? and columnOne = ?
in deze query.
Query:
select abs(columnOne), columnTwo from tableOne where columnOne = 12 and columnTwo = 21;
Reden om niet overeen te komen: de eerste expressie in de kolomlijst is niet columnOne
meer, maar functie abs
geëvalueerd over columnOne
(abs(columnOne)
), wat niet semantisch equivalent is.
Query:
select columnOne as "column one", columnTwo as "column two" from tableOne as "table one" where columnOne = ceiling(16) and columnTwo = 16;
Reden om niet overeen te komen: De eerste expressie in de WHERE-clausule evalueert niet langer de gelijkheid van columnOne
met een letterlijke waarde, maar met het resultaat van de functie ceiling
die over een letterlijke waarde wordt geëvalueerd, wat niet semantisch equivalent is.
Weergaven
query_winkel.qs_weergave
Deze weergave retourneert alle gegevens die worden bewaard in de ondersteunende tabellen van het queryarchief. Gegevens die nog steeds in het geheugen worden opgenomen voor het actieve tijdvenster, zijn pas zichtbaar als het tijdvenster aan een einde komt en de in-memory vluchtige gegevens worden verzameld en bewaard in tabellen die op schijf zijn opgeslagen. Deze weergave retourneert een andere rij voor elke afzonderlijke database (db_id), gebruiker (user_id) en query (query_id).
Naam | Typ | Verwijzingen | Beschrijving |
---|---|---|---|
runtime_stats_entry_id |
Bigint | Id uit de runtime_stats_entries tabel. | |
user_id |
of iets dergelijks | pg_authid.oid | OID van de gebruiker die de instructie heeft uitgevoerd. |
db_id |
of iets dergelijks | pg_database.oid | OID van de database waarin de instructie is uitgevoerd. |
query_id |
Bigint | Interne hashcode, berekend uit de parseboom van de instructie. | |
query_sql_text |
varchar(10000) | Tekst van een representatieve verklaring. Verschillende query's met dezelfde structuur worden samen geclusterd; deze tekst is de tekst voor de eerste van de query's in het cluster. De standaardwaarde voor de maximale lengte van querytekst is 6000 en kan worden gewijzigd met de query store-parameter pg_qs.max_query_text_length . Als de tekst van de query deze maximumwaarde overschrijdt, wordt deze afgekapt tot de eerste pg_qs.max_query_text_length bytes. |
|
plan_id |
Bigint | Id van het plan dat overeenkomt met deze query. | |
start_time |
tijdstempel | Query's worden geaggregeerd per tijdvenster. De serverparameter pg_qs.interval_length_minutes definieert de tijdsduur van deze vensters (standaard is 15 minuten). Deze kolom komt overeen met de begintijd van het venster waarin deze vermelding is vastgelegd. |
|
end_time |
tijdstempel | Eindtijd die overeenkomt met het tijdvenster voor deze vermelding. | |
calls |
Bigint | Aantal keren dat de query in dit tijdvenster wordt uitgevoerd. U ziet dat voor parallelle query's het aantal aanroepen voor elke uitvoering overeenkomt met 1 voor het back-endproces dat de uitvoering van de query aanstuurt, plus net zoveel andere eenheden voor elk back-endwerkrolproces dat wordt gestart om samen te werken met de parallelle vertakkingen van de uitvoeringsstructuur. | |
total_time |
dubbele precisie | Totale uitvoeringstijd van query's, in milliseconden. | |
min_time |
dubbele precisie | Minimale uitvoeringstijd van query's, in milliseconden. | |
max_time |
dubbele precisie | Maximale uitvoeringstijd van query's, in milliseconden. | |
mean_time |
dubbele precisie | Gemiddelde uitvoeringstijd van query's, in milliseconden. | |
stddev_time |
dubbele precisie | Standaarddeviatie van de uitvoeringstijd van de query, in milliseconden. | |
rows |
Bigint | Het totale aantal rijen dat is opgehaald of beïnvloed door de query. Merk op dat bij parallelle query's het aantal rijen voor elke uitvoering overeenkomt met het aantal rijen dat aan de client wordt geretourneerd door het back-endproces dat de uitvoering van de query aanstuurt. Daarnaast omvat dit de som van alle rijen die elk back-end werkproces, dat is gestart om samen de parallelle takken van de uitvoeringsstructuur uit te voeren, teruggeeft aan het back-endproces dat de uitvoering van de query aanstuurt. | |
shared_blks_hit |
Bigint | Het totale aantal gedeelde blokcache-hits via de instructie. | |
shared_blks_read |
Bigint | Het totale aantal gedeelde blokken dat door de verklaring is gelezen. | |
shared_blks_dirtied |
Bigint | Het totale aantal gedeelde blokken dat door de instructie is gewijzigd. | |
shared_blks_written |
Bigint | Het totale aantal gedeelde blokken dat door het statement is geschreven. | |
local_blks_hit |
bigint (een datatype voor grote gehele getallen) | Totaal aantal lokale blokcache-treffers door de uitspraak. | |
local_blks_read |
Bigint | Het totale aantal lokale blokken dat door de instructie is gelezen. | |
local_blks_dirtied |
Bigint | Het totale aantal lokale blokken dat door de instructie wordt aangetast. | |
local_blks_written |
Bigint | Het totale aantal lokale blokken dat door de instructie is geschreven. | |
temp_blks_read |
Bigint | Totaal aantal tijdelijke blokken dat door de instructie wordt gelezen. | |
temp_blks_written |
Bigint | Totaal aantal tijdelijke blokken dat door de instructie zijn geschreven. | |
blk_read_time |
dubbele precisie | Totale tijd die de verklaring heeft besteed aan het lezen van blokken, in milliseconden (als track_io_timing is ingeschakeld, anders nul). | |
blk_write_time |
dubbele precisie | Totale tijd die de instructie heeft besteed aan het schrijven van blokken, in milliseconden (als track_io_timing is ingeschakeld, anders nul). | |
is_system_query |
booleaan | Bepaalt of de rol met user_id = 10 (azuresu) de query heeft uitgevoerd. Deze gebruiker heeft supergebruikersbevoegdheden en wordt gebruikt om besturingsvlakbewerkingen uit te voeren. Omdat deze service een beheerde PaaS-service is, maakt alleen Microsoft deel uit van die supergebruikerrol. | |
query_type |
Tekst | Type bewerking dat wordt vertegenwoordigd door de query. Mogelijke waarden zijnunknown , select , update , , insert , delete , merge , utility , , nothing . undefined |
|
search_path |
Tekst | De waarde van search_path ingesteld op het moment dat de query is vastgelegd. | |
query_parameters |
Tekst | Tekstweergave van een JSON-object met de waarden die worden doorgegeven aan de positionele parameters van een geparameteriseerde query. In deze kolom wordt alleen de waarde in twee gevallen ingevuld: 1) voor niet-geparameteriseerde query's. 2) Voor geparameteriseerde query's, wanneer pg_qs.parameters_capture_mode is ingesteld op capture_first_sample , en als het queryarchief de waarden voor de parameters van de query kan ophalen tijdens de uitvoering van de query. |
|
parameters_capture_status |
Tekst | Type bewerking dat wordt vertegenwoordigd door de query. Mogelijke waarden zijn succeeded (de query was niet geparameteriseerd of het was een geparameteriseerde query en waarden zijn succesvol vastgelegd), disabled (de query was geparameteriseerd, maar parameters zijn niet vastgelegd omdat pg_qs.parameters_capture_mode is ingesteld op capture_parameterless_only ), too_long_to_capture (de query was geparameteriseerd, maar parameters zijn niet vastgelegd omdat de lengte van de resulterende JSON, die in de query_parameters kolom van deze weergave zou worden weergegeven, als te lang werd beschouwd om door de querystore te worden opgeslagen), too_many_to_capture (de query was geparameteriseerd, maar parameters zijn niet vastgelegd omdat het totale aantal parameters als te groot werd beschouwd om door de querystore te worden opgeslagen), serialization_failed (de query was geparameteriseerd, maar minstens één van de waarden die als parameter zijn doorgegeven kon niet naar tekst worden geserialiseerd). |
query_store.query_texts_view
Deze weergave retourneert querytekstgegevens in Query Store. Er is één rij voor elke afzonderlijke query_sql_text.
Naam | Typ | Beschrijving |
---|---|---|
query_text_id |
Bigint | ID voor de tabel query_texts |
query_sql_text |
varchar(10000) | Tekst van een representatieve verklaring. Verschillende query's met dezelfde structuur worden samen geclusterd; deze tekst is de tekst voor de eerste van de query's in het cluster. |
query_type |
smallint | Type bewerking dat wordt vertegenwoordigd door de query. In versie van PostgreSQL <= 14 zijn de mogelijke waarden 0 (onbekend), 1 (select), 2 (update), 3 (insert), 4 (delete), 5 (utility), 6 (niets). In versie van PostgreSQL >= 15 zijn 0 mogelijke waarden (onbekend), 1 (select), 2 (update), (invoegen), 3 4 (verwijderen), (samenvoegen), 5 6 (hulpprogramma), 7 (niets). |
query_store.pgms_wait_sampling_view
Deze weergave retourneert wacht gebeurtenisgegevens in Query Store. Deze weergave retourneert een andere rij voor elke afzonderlijke database (db_id), gebruiker (user_id), query (query_id) en gebeurtenis (gebeurtenis).
Naam | Typ | Verwijzingen | Beschrijving |
---|---|---|---|
start_time |
tijdstempel | Query's worden geaggregeerd per tijdvenster. De serverparameter pg_qs.interval_length_minutes definieert de tijdsduur van deze vensters (standaard is 15 minuten). Deze kolom komt overeen met de begintijd van het venster waarin deze vermelding is vastgelegd. |
|
end_time |
tijdstempel | Eindtijd die overeenkomt met het tijdvenster voor deze vermelding. | |
user_id |
of iets dergelijks | pg_authid.oid | Object-id van de gebruiker die de instructie heeft uitgevoerd. |
db_id |
of iets dergelijks | pg_database.oid | Object-id van database waarin de instructie is uitgevoerd. |
query_id |
Bigint | Interne hashcode, berekend uit de parseboom van de instructie. | |
event_type |
Tekst | Het type gebeurtenis waarvoor de back-end wacht. | |
event |
Tekst | De naam van het wachtevenement als de back-end momenteel wacht. | |
calls |
geheel getal | Aantal keren dat dezelfde gebeurtenis is vastgelegd. |
Opmerking
Raadpleeg de officiële documentatie van event_type
voor een lijst met mogelijke waarden in de event
en query_store.pgms_wait_sampling_view
kolommen van de -weergave en zoek daar naar informatie die verwijst naar kolommen met dezelfde namen.
query_store.query_plans_view
Deze weergave retourneert het queryplan dat is gebruikt om een query uit te voeren. Er is één rij per afzonderlijke database-id en query-id. Query store registreert alleen queryplannen voor niet-gebruikte query's.
Naam | Typ | Verwijzingen | Beschrijving |
---|---|---|---|
plan_id |
Bigint | De hashwaarde van het genormaliseerde queryplan dat wordt geproduceerd door EXPLAIN. Het is in genormaliseerde vorm omdat het de geschatte kosten van planknooppunten en het gebruik van buffers uitsluit. | |
db_id |
of iets dergelijks | pg_database.oid | OID van de database waarin de instructie is uitgevoerd. |
query_id |
Bigint | Interne hashcode, berekend uit de parseboom van de instructie. | |
plan_text |
varchar(10000) | Uitvoeringsplan van de instructie gegeven: kosten=false, buffers=false en formaat=text. Identieke uitvoer als de uitvoer die door EXPLAIN wordt geproduceerd. |
Functies
query_store.qs_reset
Met deze functie worden alle tot nu toe verzamelde statistieken door de query store verwijderd. Hiermee worden de statistieken voor reeds gesloten tijdvensters verwijderd, die al zijn opgeslagen in tabellen op schijf. Ook worden de statistieken voor het huidige tijdvenster verwijderd, die alleen in het geheugen aanwezig zijn. Alleen leden van de serverbeheerderrol (azure_pg_admin
) kunnen deze functie uitvoeren.
query_store.staging_data_reset
Met deze functie worden alle statistieken die in het geheugen zijn verzameld door de query store verwijderd. Dit betekent dat de gegevens in het geheugen, die nog niet zijn weggeschreven naar de schijftabellen die de persistentie van verzamelde gegevens voor de query store ondersteunen, worden verwijderd. Alleen leden van de serverbeheerderrol (azure_pg_admin
) kunnen deze functie uitvoeren.
Modus Alleen-lezen
Wanneer een flexibele Azure Database for PostgreSQL-server zich in de modus Alleen-lezen bevindt, zoals wanneer de default_transaction_read_only
parameter is ingesteld on
op, of als de modus Alleen-lezen automatisch wordt ingeschakeld vanwege het bereiken van de opslagcapaciteit, worden er geen gegevens vastgelegd in het queryarchief.
Wanneer u het queryarchief inschakelt op een server met leesreplica's, wordt het queryarchief niet automatisch ingeschakeld op een van de leesreplica's. Zelfs als u het inschakelt voor een van de leesreplica's, registreert de query store de uitgevoerde query's op leesreplica's niet, omdat ze in de modus Alleen-lezen werken totdat u ze promoot tot primair.