Udostępnij przez


Monitorowanie za pomocą pg_stat_statements

Ważne

Skalowanie automatyczne bazy danych Lakebase znajduje się w wersji beta w następujących regionach: eastus2, westeurope, westus.

Autoskalowanie bazy danych Lakebase to najnowsza wersja bazy danych Lakebase z automatycznym skalowaniem obliczeniowym, skalowaniem do zera, rozgałęzianiem i natychmiastowym przywracaniem. Aby zapoznać się z porównaniem funkcji z Lakebase Provisioned, sprawdź wybieranie między wersjami.

pg_stat_statements to rozszerzenie Postgres, które zapewnia szczegółowy widok statystyczny wykonywania instrukcji SQL w bazie danych Lakebase Postgres. Śledzi informacje, takie jak liczba wykonań, łączny i średni czas wykonywania oraz inne, pomagając analizować i optymalizować wydajność zapytań SQL.

Kiedy należy używać pg_stat_statements

Użyj pg_stat_statements , gdy potrzebujesz:

  • Szczegółowe statystyki wykonywania zapytań i metryki wydajności
  • Identyfikacja często wykonywanych lub wolnych zapytań
  • Analiza wydajności zapytań i szczegółowe informacje dotyczące optymalizacji
  • Analiza obciążenia bazy danych i planowanie pojemności
  • Integracja z niestandardowymi narzędziami monitorowania i panelami kontrolnymi

Włącz pg_stat_statements

Rozszerzenie pg_stat_statements jest dostępne w usłudze Lakebase Postgres. Aby ją włączyć:

  1. Nawiąż połączenie z bazą danych przy użyciu edytora SQL lub klienta Postgres.

  2. Uruchom następujące polecenie SQL, aby utworzyć rozszerzenie:

    CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
    
  3. Rozszerzenie rozpoczyna zbieranie statystyk natychmiast po utworzeniu.

Trwałość danych

Statystyki zebrane przez rozszerzenie pg_stat_statements są przechowywane w pamięci i nie są zachowywane, gdy środowisko obliczeniowe Lakebase jest zawieszone lub ponownie uruchomione. Jeśli na przykład obliczenia skalują się w dół z powodu braku aktywności, wszelkie istniejące statystyki zostaną utracone. Nowe statystyki są zbierane po ponownym uruchomieniu obliczeń.

To zachowanie oznacza, że:

  • Statystyki resetowane po ponownym uruchomieniu lub zawieszeniu obliczeń
  • Długotrwała analiza wydajności wymaga spójnej dostępności obliczeniowej
  • Przed zaplanowaną konserwacją lub ponownym uruchomieniem możesz wyeksportować ważne statystyki

Uwaga / Notatka

Rozważ regularne uruchamianie zapytań monitorowania i przechowywanie wyników zewnętrznie, jeśli potrzebujesz historycznych danych wydajności w zdarzeniach cyklu życia obliczeniowego.

Dowiedz się więcej: Rozszerzenia bazy danych Postgres

Statystyki wykonywania zapytań

Po włączeniu rozszerzenia można wykonywać zapytania dotyczące statystyk wykonywania przy użyciu pg_stat_statements widoku. Ten widok zawiera jeden wiersz na odrębne zapytanie bazy danych z różnymi statystykami:

SELECT * FROM pg_stat_statements LIMIT 10;

Widok zawiera szczegółowe informacje, takie jak:

identyfikator użytkownika dbid queryid kwerenda Wywołania
16391 16384 -9047282044438606287 SELECT * Z użytkowników; 10

Pełną listę kolumn i opisów można znaleźć w dokumentacji bazy danych PostgreSQL.

Kluczowe zapytania monitorowania

Użyj tych zapytań, aby przeanalizować wydajność bazy danych:

Znajdowanie najwolniejszych zapytań

To zapytanie identyfikuje zapytania o najwyższym średnim czasie wykonywania, co może wskazywać niewydajne zapytania wymagające optymalizacji:

SELECT
    query,
    calls,
    total_exec_time,
    mean_exec_time,
    (total_exec_time / calls) AS avg_time_ms
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 20;

Znajdowanie najczęściej wykonywanych zapytań

Najczęściej wykonywane zapytania stanowią ścieżki krytyczne i są kandydatami do optymalizacji. To zapytanie zawiera współczynniki trafień pamięci podręcznej, aby ułatwić identyfikowanie zapytań, które mogą korzystać z lepszego indeksowania:

SELECT
    query,
    calls,
    total_exec_time,
    rows,
    100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements
ORDER BY calls DESC
LIMIT 20;

Znajdź zapytania z najwyższym I/O

To zapytanie identyfikuje zapytania, które wykonują najwięcej operacji we/wy dysku, co może mieć wpływ na ogólną wydajność bazy danych:

SELECT
    query,
    calls,
    shared_blks_read + shared_blks_written AS total_io,
    shared_blks_read,
    shared_blks_written
FROM pg_stat_statements
ORDER BY (shared_blks_read + shared_blks_written) DESC
LIMIT 20;

Znajdowanie najbardziej czasochłonnych zapytań

To zapytanie identyfikuje zapytania, które zużywają najwięcej całkowitego czasu wykonywania we wszystkich uruchomieniach:

SELECT
    query,
    calls,
    total_exec_time,
    mean_exec_time,
    rows
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

Znajdź zapytania, które zwracają wiele wierszy

To zapytanie identyfikuje zapytania zwracające duże zestawy wyników, które mogą korzystać z stronicowania lub filtrowania:

SELECT
    query,
    calls,
    rows,
    (rows / calls) AS avg_rows_per_call
FROM pg_stat_statements
ORDER BY rows DESC
LIMIT 10;

Resetowanie statystyk

Aby zresetować statystyki zebrane przez pg_stat_statementsprogram:

Uwaga / Notatka

Tylko databricks_superuser role mają uprawnienia wymagane do wykonania tej funkcji. Roli domyślnej utworzonej z projektem Lakebase i rolom utworzonym w aplikacji Lakebase są przypisane do roli databricks_superuser.

SELECT pg_stat_statements_reset();

Ta funkcja czyści wszystkie skumulowane dane statystyczne, takie jak czasy wykonywania i liczniki dla instrukcji SQL, i rozpoczyna zbieranie nowych danych. Jest to szczególnie przydatne, gdy chcesz zacząć od zbierania statystyk wydajności.

Zasoby

Dowiedz się więcej: Dokumentacja bazy danych PostgreSQL