Monitorowanie wydajności za pomocą magazynu zapytań
DOTYCZY: Azure Database for PostgreSQL — serwer elastyczny
Magazyn zapytań to funkcja na serwerze elastycznym usługi Azure Database for PostgreSQL, która umożliwia śledzenie wydajności zapytań w czasie. Magazyn zapytań upraszcza rozwiązywanie problemów z wydajnością, ułatwiając szybkie znajdowanie najdłużej działających i najbardziej intensywnie korzystających z zasobów zapytań. Magazyn zapytań automatycznie przechwytuje historię zapytań i statystyk środowiska uruchomieniowego i zachowuje je do przeglądu. Wycinekuje dane według czasu, aby można było zobaczyć wzorce użycia czasowego. Dane dla wszystkich użytkowników, baz danych i zapytań są przechowywane w bazie danych o nazwie azure_sys
w wystąpieniu serwera elastycznego usługi Azure Database for PostgreSQL.
Włączanie magazynu zapytań
Magazyn zapytań jest dostępny do użycia bez dodatkowych opłat. Jest to funkcja zgody, więc nie jest domyślnie włączona na serwerze. Magazyn zapytań można włączyć lub wyłączyć globalnie dla wszystkich baz danych na danym serwerze i nie można włączyć ani wyłączyć dla każdej bazy danych.
Ważne
Nie włączaj magazynu zapytań w warstwie cenowej z możliwością zwiększenia szybkości, ponieważ może to spowodować wpływ na wydajność.
Włączanie magazynu zapytań w witrynie Azure Portal
- Zaloguj się do witryny Azure Portal i wybierz wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL.
- Wybierz pozycję Parametry serwera w sekcji Ustawienia menu.
pg_qs.query_capture_mode
Wyszukaj parametr .- Ustaw wartość na
top
luball
, w zależności od tego, czy chcesz śledzić zapytania najwyższego poziomu, czy też zagnieżdżone zapytania (te, które są wykonywane wewnątrz funkcji lub procedury), a następnie wybierz pozycję Zapisz. Poczekaj do 20 minut, aż pierwsza partia danych będzie utrwalana wazure_sys
bazie danych.
Włączanie próbkowania oczekiwania magazynu zapytań
pgms_wait_sampling.query_capture_mode
Wyszukaj parametr .- Ustaw wartość na
all
i Zapisz.
Informacje w magazynie zapytań
Magazyn zapytań składa się z dwóch magazynów:
- Magazyn statystyk środowiska uruchomieniowego do utrwalania informacji dotyczących statystyk wykonywania zapytań.
- Magazyn statystyk oczekiwania na utrwalanie informacji statystycznych dotyczących oczekiwania.
Typowe scenariusze korzystania z magazynu zapytań obejmują:
- Określenie, ile razy zapytanie zostało wykonane w danym przedziale czasu.
- Porównanie średniego czasu wykonywania zapytania w oknach czasu w celu wyświetlenia dużych odmian.
- Identyfikowanie najdłużej uruchomionych zapytań w ciągu ostatnich kilku godzin.
- Identyfikowanie pierwszych N zapytań oczekujących na zasoby.
- Zrozumienie charakteru oczekiwania dla określonego zapytania.
Aby zminimalizować użycie miejsca, statystyki wykonywania środowiska uruchomieniowego w magazynie statystyk środowiska uruchomieniowego są agregowane w stałym, konfigurowalnym przedziale czasu. Informacje w tych magazynach można wykonywać przy użyciu widoków.
Uzyskiwanie dostępu do informacji o magazynie zapytań
Dane magazynu zapytań są przechowywane w bazie danych w wystąpieniu serwera elastycznego azure_sys
usługi Azure Database for PostgreSQL.
Następujące zapytanie zwraca informacje o zapytaniach zarejestrowanych w magazynie zapytań:
SELECT * FROM query_store.qs_view;
To zapytanie zwraca informacje o statystykach oczekiwania:
SELECT * FROM query_store.pgms_wait_sampling_view;
Znajdowanie zapytań oczekiwania
Typy zdarzeń oczekiwania łączą różne zdarzenia oczekiwania w zasobniki według podobieństwa. Magazyn zapytań udostępnia typ zdarzenia oczekiwania, konkretną nazwę zdarzenia oczekiwania i pytanie. Możliwość skorelowania tych informacji oczekiwania ze statystykami środowiska uruchomieniowego zapytania oznacza, że możesz lepiej zrozumieć, co przyczynia się do charakterystyki wydajności zapytań.
Poniżej przedstawiono kilka przykładów sposobu uzyskania większego wglądu w obciążenie przy użyciu statystyk oczekiwania w magazynie zapytań:
Obserwacja | Akcja |
---|---|
Oczekiwanie na wysokie blokady | Sprawdź teksty zapytań pod kątem zapytań, których dotyczy problem, i zidentyfikuj jednostki docelowe. Poszukaj w magazynie zapytań dla innych zapytań, które są wykonywane często i/lub mają wysoki czas trwania i modyfikują tę samą jednostkę. Po zidentyfikowaniu tych zapytań rozważ zmianę logiki aplikacji w celu poprawy współbieżności lub użyj mniej restrykcyjnego poziomu izolacji. |
Wysokie oczekiwania we/wy buforu | Znajdź zapytania z dużą liczbą operacji odczytu fizycznego w magazynie zapytań. Jeśli pasują one do zapytań z dużymi oczekiwaniami we/wy, rozważ włączenie funkcji automatycznego dostrajania indeksów, aby sprawdzić, czy może zalecić utworzenie niektórych indeksów, które mogą zmniejszyć liczbę operacji odczytu fizycznego dla tych zapytań. |
Oczekiwanie na dużą ilość pamięci | Znajdź zapytania zużywające najwięcej pamięci w magazynie zapytań. Te zapytania prawdopodobnie opóźniają dalszy postęp zapytań, których dotyczy problem. |
Opcje konfiguracji
Gdy magazyn zapytań jest włączony, zapisuje dane w oknach agregacji o długości określonej przez parametr serwera pg_qs.interval_length_minutes (domyślnie to 15 minut). Dla każdego okna przechowuje maksymalnie 500 odrębnych zapytań na okno. Atrybuty, które odróżniają unikatowość każdego zapytania, są user_id (identyfikator użytkownika wykonującego zapytanie), db_id (identyfikator bazy danych, w którym kontekst wykonuje zapytanie) i query_id (unikatowa wartość całkowita identyfikującą wykonane zapytanie). Jeśli liczba odrębnych zapytań osiągnie 500 w skonfigurowanym interwale, 5% zarejestrowanych zapytań zostanie cofniętych, aby zapewnić więcej miejsca. Pierwsze cofnięto przydziały to te, które zostały wykonane najmniejszą liczbę razy.
Dostępne są następujące opcje konfigurowania parametrów magazynu zapytań:
Parametr | Opis | Wartość domyślna | Zakres |
---|---|---|---|
pg_qs.interval_length_minutes (*) |
Interwał przechwytywania w minutach dla magazynu zapytań. Definiuje częstotliwość trwałości danych. | 15 |
1 - 30 |
pg_qs.is_enabled_fs |
Tylko użycie wewnętrzne: ten parametr jest używany jako przełącznik zastąpienia funkcji. Jeśli jest on wyświetlany jako wyłączony, magazyn zapytań jest wyłączony, pomimo wartości ustawionej dla pg_qs.query_capture_mode elementu . |
on |
on , off |
pg_qs.max_plan_size |
Maksymalna liczba bajtów zapisanych z tekstu planu zapytania według magazynu zapytań; dłuższe plany są obcinane. | 7500 |
100 - 10000 |
pg_qs.max_query_text_length |
Maksymalna długość zapytania, którą można zapisać; dłuższe zapytania są obcinane. | 6000 |
100 - 10000 |
pg_qs.parameters_capture_mode |
Określa, czy i kiedy należy przechwytywać parametry pozycyjne zapytania. | capture_parameterless_only |
capture_parameterless_only , capture_first_sample |
pg_qs.query_capture_mode |
Instrukcje do śledzenia. | none |
none , , top all |
pg_qs.retention_period_in_days |
Okres przechowywania w dniach dla magazynu zapytań. Starsze dane są usuwane automatycznie. | 7 |
1 - 30 |
pg_qs.store_query_plans |
Czy plany zapytań powinny być zapisywane w magazynie zapytań. | off |
on , off |
pg_qs.track_utility |
Czy magazyn zapytań musi śledzić polecenia narzędzia. | on |
on , off |
(*) Parametr serwera statycznego, który wymaga ponownego uruchomienia serwera, aby zmiany jego wartości zaczęły obowiązywać.
Następujące opcje mają zastosowanie specjalnie do statystyk oczekiwania:
Parametr | Opis | Wartość domyślna | Zakres |
---|---|---|---|
pgms_wait_sampling.history_period |
Częstotliwość w milisekundach, w których próbkowane są zdarzenia oczekiwania. | 100 |
1 - 600000 |
pgms_wait_sampling.is_enabled_fs |
Tylko użycie wewnętrzne: ten parametr jest używany jako przełącznik zastąpienia funkcji. Jeśli jest on wyświetlany jako off , próbkowanie oczekiwania jest wyłączone pomimo wartości ustawionej dla .pgms_wait_sampling.query_capture_mode |
on |
on , off |
pgms_wait_sampling.query_capture_mode |
Które instrukcje pgms_wait_sampling rozszerzenia muszą śledzić. |
none |
none , all |
Uwaga
pg_qs.query_capture_mode
pgms_wait_sampling.query_capture_mode
zastępuje . Jeśli pg_qs.query_capture_mode
wartość to none
, pgms_wait_sampling.query_capture_mode
ustawienie nie ma żadnego wpływu.
Użyj witryny Azure Portal , aby uzyskać lub ustawić inną wartość parametru.
Widoki i funkcje
Możesz wykonywać zapytania dotyczące informacji zarejestrowanych przez magazyn zapytań i usuwać je przy użyciu niektórych widoków i funkcji dostępnych w query_store
schemacie azure_sys
bazy danych. Każda osoba w roli publicznej PostgreSQL może używać tych widoków do wyświetlenia danych w magazynie zapytań. Te widoki są dostępne tylko w bazie danych azure_sys .
Zapytania są znormalizowane przez przyjrzenie się ich strukturze i ignorowanie niczego, co nie jest semantycznie znaczące, na przykład literałów, stałych, aliasów lub różnic w wielkości liter.
Jeśli dwa zapytania są semantycznie identyczne, nawet jeśli używają różnych aliasów dla tych samych przywoływanych kolumn i tabel, są one identyfikowane z tym samym query_id. Jeśli dwa zapytania różnią się tylko wartościami literału używanymi w nich, są one również identyfikowane z tymi samymi query_id. W przypadku zapytań zidentyfikowanych z tym samym query_id ich sql_query_text jest to zapytanie, które zostało wykonane jako pierwsze od czasu rozpoczęcia działania rejestrowania magazynu zapytań lub od czasu ostatniego odrzucenia utrwalone dane, ponieważ funkcja query_store.qs_reset została wykonana.
Jak działa normalizacja zapytań
Poniżej przedstawiono kilka przykładów, aby spróbować zilustrować, jak działa normalizacja:
Załóżmy, że tworzysz tabelę z następującą instrukcją:
create table tableOne (columnOne int, columnTwo int);
Możesz włączyć zbieranie danych magazynu zapytań, a jeden lub wielu użytkowników wykonuje następujące zapytania w tej dokładnej kolejności:
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";
Wszystkie poprzednie zapytania współdzielą te same query_id. Tekst, który przechowuje magazyn zapytań, to pierwszy zapytanie wykonywane po włączeniu zbierania danych. W związku z tym byłoby to select * from tableOne;
.
Następujący zestaw zapytań, po normalizacji, nie pasuje do poprzedniego zestawu zapytań, ponieważ klauzula WHERE sprawia, że są one semantycznie różne:
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;
Jednak wszystkie zapytania w tym ostatnim zestawie współużytkują te same query_id, a tekst użyty do zidentyfikowania ich wszystkich to pierwsze zapytanie w partii select columnOne as c1, columnTwo as c2 from tableOne as t1 where columnOne = 1 and columnTwo = 1;
.
Na koniec znajdź poniżej kilka zapytań, które nie pasują do query_id tych w poprzedniej partii, i przyczyna, dla której nie są one następujące:
Zapytanie:
select columnTwo as c2, columnOne as c1 from tableOne as t1 where columnOne = 1 and columnTwo = 1;
Przyczyna braku dopasowania: Lista kolumn odwołuje się do tych samych dwóch kolumn (columnOne i ColumnTwo), ale kolejność, w której są one odwoływali się, z columnOne, ColumnTwo
poprzedniej partii do ColumnTwo, columnOne
w tej kwerendzie.
Zapytanie:
select * from tableOne where columnTwo = 25 and columnOne = 25;
Przyczyna braku dopasowania: Kolejność, w której wyrażenia obliczane w klauzuli WHERE są odwrócione z columnOne = ? and ColumnTwo = ?
poprzedniej partii do ColumnTwo = ? and columnOne = ?
w tym zapytaniu.
Zapytanie:
select abs(columnOne), columnTwo from tableOne where columnOne = 12 and columnTwo = 21;
Przyczyna braku dopasowania: pierwsze wyrażenie na liście kolumn nie columnOne
jest już zgodne, ale funkcja abs
obliczana przez columnOne
wartość (abs(columnOne)
), która nie jest równoważna semantycznie.
Zapytanie:
select columnOne as "column one", columnTwo as "column two" from tableOne as "table one" where columnOne = ceiling(16) and columnTwo = 16;
Przyczyna braku dopasowania: pierwsze wyrażenie w klauzuli WHERE nie ocenia już równości columnOne
z literałem, ale z wynikiem funkcji ceiling
obliczonej na literał, który nie jest semantycznie równoważny.
Widoki
query_store.qs_view
Ten widok zwraca wszystkie dane, które są utrwalane w tabelach pomocniczych magazynu zapytań. Dane, które nadal rejestrują dane w pamięci dla aktualnie aktywnego przedziału czasu, nie są widoczne, dopóki przedział czasu nie dobiegnie końca, a jego dane nietrwałe w pamięci są zbierane i utrwalane w tabelach przechowywanych na dysku. Ten widok zwraca inny wiersz dla każdej odrębnej bazy danych (db_id), użytkownika (user_id) i zapytania (query_id).
Nazwa/nazwisko | Type | Dokumentacja | Opis |
---|---|---|---|
runtime_stats_entry_id |
bigint | Identyfikator z tabeli runtime_stats_entries. | |
user_id |
Oid | pg_authid.oid | Identyfikator OID użytkownika, który wykonał instrukcję . |
db_id |
Oid | pg_database.oid | Identyfikator OID bazy danych, w której wykonano instrukcję. |
query_id |
bigint | Wewnętrzny kod skrótu obliczany z drzewa analizy instrukcji. | |
query_sql_text |
varchar(10000) | Tekst oświadczenia przedstawiciela. Różne zapytania o tej samej strukturze są grupowane razem; ten tekst jest tekstem pierwszego zapytania w klastrze. Wartość domyślna maksymalnej długości tekstu zapytania to 6000 i można ją zmodyfikować przy użyciu parametru pg_qs.max_query_text_length magazynu zapytań . Jeśli tekst zapytania przekracza tę maksymalną wartość, zostanie obcięty do pierwszych pg_qs.max_query_text_length znaków. |
|
plan_id |
bigint | Identyfikator planu odpowiadającego temu zapytaniu. | |
start_time |
timestamp | Zapytania są agregowane według okien czasowych. Parametr pg_qs.interval_length_minutes serwera definiuje przedział czasu tych okien (wartość domyślna to 15 minut). Ta kolumna odpowiada czasowi rozpoczęcia okna, w którym zarejestrowano ten wpis. |
|
end_time |
timestamp | Godzina zakończenia odpowiadająca przedziałowi czasu dla tego wpisu. | |
calls |
bigint | Ile razy zapytanie zostało wykonane w tym przedziale czasu. Zwróć uwagę, że w przypadku zapytań równoległych liczba wywołań dla każdego wykonania odpowiada 1 procesowi zaplecza, który napędza wykonywanie zapytania, oraz tyle innych jednostek dla każdego procesu roboczego zaplecza, które uruchamia się w celu współpracy przy wykonywaniu równoległych gałęzi drzewa wykonywania. | |
total_time |
podwójna precyzja | Łączny czas wykonywania zapytania w milisekundach. | |
min_time |
podwójna precyzja | Minimalny czas wykonywania zapytania w milisekundach. | |
max_time |
podwójna precyzja | Maksymalny czas wykonywania zapytania w milisekundach. | |
mean_time |
podwójna precyzja | Średni czas wykonywania zapytania w milisekundach. | |
stddev_time |
podwójna precyzja | Odchylenie standardowe czasu wykonywania zapytania w milisekundach. | |
rows |
bigint | Łączna liczba wierszy pobranych lub dotkniętych instrukcją . Zwróć uwagę, że w przypadku zapytań równoległych liczba wierszy dla każdego wykonania odpowiada liczbie wierszy zwróconych klientowi przez proces zaplecza, który napędza wykonywanie zapytania, oraz sumę wszystkich wierszy, które każdy proces roboczy zaplecza uruchomiono w celu współpracy przy wykonywaniu równoległych gałęzi drzewa wykonywania, powraca do procesu zaplecza, który napędza wykonywanie zapytania. | |
shared_blks_hit |
bigint | Łączna liczba trafień udostępnionej pamięci podręcznej bloków według instrukcji . | |
shared_blks_read |
bigint | Łączna liczba udostępnionych bloków odczytanych przez instrukcję . | |
shared_blks_dirtied |
bigint | Łączna liczba udostępnionych bloków brudnych przez instrukcję . | |
shared_blks_written |
bigint | Łączna liczba udostępnionych bloków napisanych przez instrukcję . | |
local_blks_hit |
bigint | Łączna liczba trafień lokalnej pamięci podręcznej bloków według instrukcji . | |
local_blks_read |
bigint | Łączna liczba bloków lokalnych odczytanych przez instrukcję . | |
local_blks_dirtied |
bigint | Łączna liczba bloków lokalnych zabrudowanych przez instrukcję . | |
local_blks_written |
bigint | Łączna liczba bloków lokalnych zapisanych przez instrukcję . | |
temp_blks_read |
bigint | Łączna liczba bloków tymczasowych odczytanych przez instrukcję . | |
temp_blks_written |
bigint | Łączna liczba bloków tymczasowych zapisanych przez instrukcję . | |
blk_read_time |
podwójna precyzja | Łączny czas spędzony na blokach odczytu w milisekundach (jeśli track_io_timing jest włączony, w przeciwnym razie zero). | |
blk_write_time |
podwójna precyzja | Łączny czas spędzony na zapisywaniu bloków w milisekundach (jeśli track_io_timing jest włączony, w przeciwnym razie zero). | |
is_system_query |
boolean | Określa, czy rola z user_id = 10 (azuresu) wykonała zapytanie. Ten użytkownik ma uprawnienia administratora i służy do wykonywania operacji płaszczyzny sterowania. Ponieważ ta usługa jest zarządzaną usługą PaaS, tylko firma Microsoft jest częścią tej roli administratora. | |
query_type |
text | Typ operacji reprezentowanej przez zapytanie. Możliwe wartości to unknown , select merge update delete utility insert , . undefined nothing |
|
search_path |
text | Wartość search_path ustawiona w momencie przechwycenia zapytania. | |
query_parameters |
text | Tekstowa reprezentacja obiektu JSON z wartościami przekazanymi do parametrów pozycyjnych zapytania sparametryzowanego. Ta kolumna wypełnia swoją wartość tylko w dwóch przypadkach: 1) dla nieparametrizowanych zapytań. 2) W przypadku zapytań sparametryzowanych, gdy pg_qs.parameters_capture_mode jest ustawiona wartość capture_first_sample , a jeśli magazyn zapytań może pobrać wartości parametrów zapytania w czasie wykonywania. |
|
parameters_capture_status |
text | Typ operacji reprezentowanej przez zapytanie. Możliwe wartości to succeeded (kwerenda nie została sparametryzowana lub została pomyślnie przechwycona sparametryzowana kwerenda i wartości) (zapytanie zostało sparametryzowane, ale parametry nie zostały przechwycone disabled , ponieważ pg_qs.parameters_capture_mode ustawiono capture_parameterless_only wartość ), too_long_to_capture (zapytanie zostało sparametryzowane, ale parametry nie zostały przechwycone, ponieważ długość wynikowego kodu JSON, który zostanie wyświetlony w query_parameters kolumnie tego widoku, był uważany za zbyt długi, aby magazyn zapytań był utrwalany), too_many_to_capture (zapytanie zostało sparametryzowane, ale parametry nie zostały przechwycone, ponieważ łączna liczba parametrów była uważana za nadmierną dla magazynu zapytań do utrwalonego), serialization_failed (kwerenda została sparametryzowana, ale co najmniej jedna z wartości przekazanych jako parametr nie może być serializowana do tekstu). |
query_store.query_text_view
Ten widok zwraca dane tekstowe zapytania w magazynie zapytań. Istnieje jeden wiersz dla każdego odrębnego query_sql_text.
Nazwa/nazwisko | Typ | Opis |
---|---|---|
query_text_id |
bigint | Identyfikator tabeli query_texts |
query_sql_text |
varchar(10000) | Tekst oświadczenia przedstawiciela. Różne zapytania o tej samej strukturze są grupowane razem; ten tekst jest tekstem pierwszego zapytania w klastrze. |
query_type |
smallint | Typ operacji reprezentowanej przez zapytanie. W wersji bazy danych PostgreSQL <= 14 możliwe wartości to 0 (nieznany), (select), 2 1 (update), (insert), 3 (delete 5 ), 4 (utility), 6 (nothing). W wersji bazy danych PostgreSQL >= 15 możliwe wartości to 0 (nieznany), (select), 1 2 (update), (insert), 3 (delete 5 ), 4 (merge), 6 (utility), 7 (nothing). |
query_store.pgms_wait_sampling_view
Ten widok zwraca dane zdarzeń oczekiwania w magazynie zapytań. Ten widok zwraca inny wiersz dla każdej odrębnej bazy danych (db_id), użytkownika (user_id), zapytania (query_id) i zdarzenia (zdarzenie).
Nazwa/nazwisko | Type | Dokumentacja | Opis |
---|---|---|---|
start_time |
timestamp | Zapytania są agregowane według okien czasowych. Parametr pg_qs.interval_length_minutes serwera definiuje przedział czasu tych okien (wartość domyślna to 15 minut). Ta kolumna odpowiada czasowi rozpoczęcia okna, w którym zarejestrowano ten wpis. |
|
end_time |
timestamp | Godzina zakończenia odpowiadająca przedziałowi czasu dla tego wpisu. | |
user_id |
Oid | pg_authid.oid | Identyfikator obiektu użytkownika, który wykonał instrukcję . |
db_id |
Oid | pg_database.oid | Identyfikator obiektu bazy danych, w której wykonano instrukcję. |
query_id |
bigint | Wewnętrzny kod skrótu obliczany z drzewa analizy instrukcji. | |
event_type |
text | Typ zdarzenia, dla którego zaplecze oczekuje. | |
event |
text | Nazwa zdarzenia oczekiwania, jeśli zaplecze oczekuje obecnie. | |
calls |
integer | Liczba przechwyconych zdarzeń. |
Uwaga
Aby uzyskać listę możliwych wartości w event_type
widoku i, event
zapoznaj się z oficjalną dokumentacją pg_stat_activity i poszukaj informacji odwołującej się do kolumn o tych query_store.pgms_wait_sampling_view
samych nazwach.
query_store.query_plans_view
Ten widok zwraca plan zapytania, który został użyty do wykonania zapytania. Istnieje jeden wiersz dla każdego unikatowego identyfikatora bazy danych i identyfikator zapytania. Magazyn zapytań rejestruje tylko plany zapytań dla zapytań, które nie są wykorzystywane.
Nazwa/nazwisko | Type | Dokumentacja | Opis |
---|---|---|---|
plan_id |
bigint | Wartość skrótu z znormalizowanego planu zapytania wygenerowanego przez firmę EXPLAIN. Jest ona w znormalizowanej postaci, ponieważ wyklucza szacowane koszty węzłów planu i użycie. | |
db_id |
Oid | pg_database.oid | Identyfikator OID bazy danych, w której wykonano instrukcję. |
query_id |
bigint | Wewnętrzny kod skrótu obliczany z drzewa analizy instrukcji. | |
plan_text |
varchar(10000) | Plan wykonania instrukcji podanej jako costs=false, buffers=false i format=text. Identyczne dane wyjściowe, które są tworzone przez firmę EXPLAIN. |
Funkcje
query_store.qs_reset
Ta funkcja odrzuca wszystkie statystyki zebrane do tej pory przez magazyn zapytań. Odrzuca statystyki dla już zamkniętych okien czasowych, które są już utrwalane w tabelach na dysku. Odrzuca również statystyki dla bieżącego przedziału czasu, które istnieją tylko w pamięci. Tylko członkowie roli administratora serwera (azure_pg_admin
) mogą wykonać tę funkcję.
query_store.staging_data_reset
Ta funkcja odrzuca wszystkie statystyki zebrane w pamięci przez magazyn zapytań (czyli dane w pamięci, które nie są jeszcze opróżniane do tabel dysków obsługujących trwałość zebranych danych dla magazynu zapytań). Tylko członkowie roli administratora serwera (azure_pg_admin
) mogą wykonać tę funkcję.
Tryb tylko do odczytu
Gdy wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL jest w trybie tylko do odczytu, na przykład gdy default_transaction_read_only
parametr jest ustawiony na on
, lub jeśli tryb tylko do odczytu jest automatycznie włączony z powodu osiągnięcia pojemności magazynu, magazyn zapytań nie przechwytuje żadnych danych.
Włączenie magazynu zapytań na serwerze z replikami do odczytu nie powoduje automatycznego włączenia magazynu zapytań w żadnej z replik do odczytu. Nawet jeśli włączysz ją w żadnej z replik do odczytu, magazyn zapytań nie rejestruje zapytań wykonywanych na żadnych replikach do odczytu, ponieważ działają w trybie tylko do odczytu, dopóki nie podwyższysz ich do poziomu podstawowego.