Rozszerzenia programu PostgreSQL w usłudze Azure Database for PostgreSQL — serwer elastyczny

DOTYCZY: Azure Database for PostgreSQL — serwer elastyczny

Elastyczny serwer usługi Azure Database for PostgreSQL umożliwia rozszerzanie funkcjonalności bazy danych przy użyciu rozszerzeń. Rozszerzenia łączą wiele powiązanych obiektów SQL w jednym pakiecie, który można załadować lub usunąć z bazy danych za pomocą polecenia . Po załadowaniu do bazy danych rozszerzenia działają jak wbudowane funkcje.

Jak używać rozszerzeń PostgreSQL

Przed zainstalowaniem rozszerzeń na serwerze elastycznym usługi Azure Database for PostgreSQL należy zezwolić na listę tych rozszerzeń do użycia.

Korzystanie z witryny Azure Portal:

  1. Wybierz wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL.
  2. Na pasku bocznym wybierz pozycję Parametry serwera.
  3. azure.extensions Wyszukaj parametr .
  4. Wybierz rozszerzenia, które chcesz zezwolić na listę. Zrzut ekranu przedstawiający serwer elastyczny usługi Azure Database for PostgreSQL — rozszerzenia z listą dozwolonych na potrzeby instalacji.

Korzystanie z interfejsu wiersza polecenia platformy Azure:

Rozszerzenia listy dozwolonych można uzyskać za pomocą polecenia zestawu parametrów interfejsu wiersza polecenia.

az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name azure.extensions --value <extension name>,<extension name>

Korzystanie z szablonu usługi ARM: przykład pokazany poniżej rozszerzenia allowlists dblink, dict_xsyn, pg_buffercache na serwerze mypostgreserver

{

    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",

    "contentVersion": "1.0.0.0",

    "parameters": {

        "flexibleServers_name": {

            "defaultValue": "mypostgreserver",

            "type": "String"

        },

        "azure_extensions_set_value": {

            "defaultValue": " dblink,dict_xsyn,pg_buffercache",

            "type": "String"

        }

    },

    "variables": {},

    "resources": [

        {

            "type": "Microsoft.DBforPostgreSQL/flexibleServers/configurations",

            "apiVersion": "2021-06-01",

            "name": "[concat(parameters('flexibleServers_name'), '/azure.extensions')]",

            "properties": {

                "value": "[parameters('azure_extensions_set_value')]",

                "source": "user-override"

            }

        }

    ]

}

shared_preload_libraries to parametr konfiguracji serwera określający, które biblioteki mają być ładowane podczas uruchamiania serwera elastycznego usługi Azure Database for PostgreSQL. Wszystkie biblioteki korzystające z pamięci udostępnionej muszą zostać załadowane za pomocą tego parametru. Jeśli rozszerzenie musi zostać dodane do udostępnionych bibliotek wstępnego ładowania, można wykonać tę akcję:

Korzystanie z witryny Azure Portal:

  1. Wybierz wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL.
  2. Na pasku bocznym wybierz pozycję Parametry serwera.
  3. shared_preload_libraries Wyszukaj parametr .
  4. Wybierz rozszerzenia, które chcesz dodać. Zrzut ekranu przedstawiający ustawienie parametru parametru udostępnione bibliotek wstępnego ładowania usługi Azure Database for PostgreSQL dla instalacji rozszerzeń.

Korzystanie z interfejsu wiersza polecenia platformy Azure:

Można ustawić shared_preload_libraries za pomocą polecenia zestawu parametrów interfejsu wiersza polecenia.

az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name shared_preload_libraries --value <extension name>,<extension name>

Po zainstalowaniu rozszerzeń na liście dozwolonych i załadowaniu należy je zainstalować w bazie danych, aby można było z nich korzystać. Aby zainstalować określone rozszerzenie, należy uruchomić polecenie CREATE EXTENSION . To polecenie ładuje spakowane obiekty do bazy danych.

Uwaga

Rozszerzenia innych firm oferowane na serwerze elastycznym usługi Azure Database for PostgreSQL to kod licencjonowany na oprogramowanie open source. Obecnie nie oferujemy żadnych rozszerzeń ani wersji rozszerzeń innych firm z modelami licencjonowania w warstwie Premium ani zastrzeżonymi.

Wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL obsługuje podzestaw rozszerzeń kluczy PostgreSQL, jak pokazano poniżej. Te informacje są również dostępne, uruchamiając polecenie SHOW azure.extensions;. Rozszerzenia, które nie są wymienione w tym dokumencie, nie są obsługiwane na serwerze elastycznym usługi Azure Database for PostgreSQL. Nie można utworzyć ani załadować własnego rozszerzenia na serwerze elastycznym usługi Azure Database for PostgreSQL.

Wersje rozszerzeń

Następujące rozszerzenia są dostępne na serwerze elastycznym usługi Azure Database for PostgreSQL:

Uwaga

Rozszerzenia w poniższej tabeli ze znacznikiem ✔️ wymagają włączenia odpowiednich bibliotek w parametrze serwera shared_preload_libraries.

Nazwa rozszerzenia Opis PostgreSQL 16 PostgreSQL 15 PostgreSQL 14 PostgreSQL 13 PostgreSQL 12 PostgreSQL 11
address_standardizer Służy do analizowania adresu do elementów składowych. Zwykle służy do obsługi kroku normalizacji adresów geokodowania. 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
address_standardizer_data_us Przykład zestawu danych Address Standardizer US 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
amcheck Funkcje do weryfikowania integralności relacji 1.3 1.3 1.3 1.2 1.2 1.1
anon (wersja zapoznawcza) Narzędzia do anonimizacji danych 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️
azure_ai Integracja usług Azure AI i ML dla bazy danych PostgreSQL 1.0.0 1.0.0 1.0.0 1.0.0 Brak Brak
azure_storage Integracja platformy Azure dla bazy danych PostgreSQL 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ Nie dotyczy
Bloom Metoda dostępu Bloom — indeks oparty na pliku podpisu 1.0 1.0 1.0 1.0 1.0 1.0
btree_gin Obsługa indeksowania typowych typów danych w gin 1.3 1.3 1.3 1.3 1.3 1.3
btree_gist Obsługa indeksowania typowych typów danych w giST 1,7 1,7 1.6 1.5 1.5 1.5
tekst citext Typ danych dla ciągów znaków bez uwzględniania wielkości liter 1.6 1.6 1.6 1.6 1.6 1.5
Moduł Typ danych dla modułów wielowymiarowych 1.5 1.5 1.5 1.4 1.4 1.4
dblink Połączenie do innych baz danych PostgreSQL z poziomu bazy danych 1.2 1.2 1.2 1.2 1.2 1.2
dict_int Szablon słownika wyszukiwania tekstu dla liczb całkowitych 1.0 1.0 1.0 1.0 1.0 1.0
dict_xsyn Szablon słownika wyszukiwania tekstu na potrzeby rozszerzonego przetwarzania synonimów 1.0 1.0 1.0 1.0 1.0 1.0
earthdistance Obliczanie odległości wielkich okręgów na powierzchni Ziemi 1.1 1.1 1.1 1.1 1.1 1.1
rozmycie rozmyte Określanie podobieństw i odległości między ciągami 1.2 1.1 1.1 1.1 1.1 1.1
hstore Typ danych do przechowywania zestawów par (klucz, wartość) 1.8 1.8 1.8 1,7 1.6 1.5
niedopgania Hipotetyczne indeksy dla bazy danych PostgreSQL 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0
intagg Agregator liczb całkowitych i moduł wyliczający (przestarzałe) 1.1 1.1 1.1 1.1 1.1 1.1
intarray Funkcje, operatory i obsługa indeksów dla tablic 1-W liczb całkowitych 1.5 1.5 1.5 1.3 1.2 1.2
Isn Typy danych dla międzynarodowych standardów numerowania produktów 1.2 1.2 1.2 1.2 1.2 1.2
Lo Konserwacja dużych obiektów 1.1 1.1 1.1 1.1 1.1 1.1
login_hook Login_hook — punkt zaczepienia w celu wykonania login_hook.login() w czasie logowania 1.5 1.4 1.4 1.4 1.4 1.4
ltree Typ danych dla struktur przypominających drzewa hierarchicznego 1.2 1.2 1.2 1.2 1.1 1.1
orafce Funkcje i operatory emulujące podzestaw funkcji i pakietów z programu Oracle RDBMS 4.4 3.24 3,18 3,18 3,18 3.7
pageinspect Sprawdzanie zawartości stron bazy danych na niskim poziomie 1.12 1.11 1,9 1.8 1,7 1,7
pgaudit Udostępnia funkcje inspekcji 16.0 ✔️ 1.7 ✔️ 1.6.2 ✔️ 1.5 ✔️ 1.4 ✔️ 1.3.2 ✔️
pg_buffercache Badanie udostępnionej pamięci podręcznej buforu 1.4 1.3 1.3 1.3 1.3 1.3
pg_cron Harmonogram zadań dla bazy danych PostgreSQL 1.5 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️
pgcrypto Funkcje kryptograficzne 1.3 1.3 1.3 1.3 1.3 1.3
pg_failover_slots (wersja zapoznawcza) Menedżer miejsca replikacji logicznej na potrzeby trybu failover 1.0.1 1.0.1 1.0.1 1.0.1 1.0.1 1.0.1
pg_freespacemap Sprawdzanie mapy wolnego miejsca (FSM) 1.2 1.2 1.2 1.2 1.2 1.2
pg_hint_plan Umożliwia dostosowanie planów wykonywania bazy danych PostgreSQL przy użyciu tak zwanych wskazówek w komentarzach SQL. 1.6.0 ✔️ 1.5 ✔️ 1.4 ✔️ 1.3.7 ✔️ 1.3.7 ✔️ 1.3.7 ✔️
pglogical Replikacja logiczna bazy danych PostgreSQL 2.4.4 ✔️ 2.4.2 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️
pg_partman Rozszerzenie do zarządzania tabelami partycjonowanych według czasu lub identyfikatora 4.7.1 ✔️ 4.7.1 ✔️ 4.6.1 ✔️ 4.5.0 ✔️ 4.5.0 ✔️ 4.5.0 ✔️
pg_prewarm Wstępne dane relacyjne 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️
pg_repack Reorganizuj tabele w bazach danych PostgreSQL z minimalnymi blokadami 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7
pgrouting Rozszerzenie PgRouting Nie dotyczy 3.5.0 3.3.0 3.3.0 3.3.0 3.3.0
pgrowlocks Pokaż informacje o blokowaniu na poziomie wiersza 1.2 1.2 1.2 1.2 1.2 1.2
pg_squeeze Narzędzie do usuwania nieużywanego miejsca z relacji. 1.6 ✔️ 1.6 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️
pg_stat_statements Śledzenie statystyk planowania i wykonywania wszystkich wykonanych instrukcji SQL 1.10 ✔️ 1.10 ✔️ 1.9 ✔️ 1.8 ✔️ 1.7 ✔️ 1.6 ✔️
pgstattuple Pokaż statystyki na poziomie krotki 1.5 1.5 1.5 1.5 1.5 1.5
pg_trgm Pomiar podobieństwa tekstu i wyszukiwanie indeksów na podstawie trigramów 1.6 1.6 1.6 1.5 1.4 1.4
pg_visibility Zapoznaj się z mapą widoczności (VM) i informacjami o widoczności na poziomie strony 1.2 1.2 1.2 1.2 1.2 1.2
plpgsql Język proceduralny PL/pgSQL 1.0 1.0 1.0 1.0 1.0 1.0
plv8 Zaufany język proceduralny PL/JavaScript (wersja 8) 3.1.7 3.1.7 3.0.0 3.0.0 3.0.0 3.0.0
Postgis Geometria i geografia pogis — typy przestrzenne i funkcje 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_raster Typy i funkcje rastrowe PostGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_sfcgal Funkcje PostGIS SFCGAL 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_tiger_geocoder Geokoder tygrysa PostGIS i odwrotny geokoder 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_topology Funkcje i typy przestrzenne topologii postGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgres_fdw Otoka danych obcych dla zdalnych serwerów PostgreSQL 1.1 1.1 1.1 1.0 1.0 1.0
semver Semantyczny typ danych wersji 0.32.1 0.32.0 0.32.0 0.32.0 0.32.0 0.32.0
session_variable Session_variable — rejestracja i manipulowanie zmiennymi sesji i stałymi 3.3 3.3 3.3 3.3 3.3 3.3
sslinfo Informacje o certyfikatach SSL 1.2 1.2 1.2 1.2 1.2 1.2
tablefunc Funkcje, które manipulują całymi tabelami, w tym krzyżowe 1.0 1.0 1.0 1.0 1.0 1.0
tds_fdw Obca otoka danych do wykonywania zapytań dotyczących bazy danych TDS (Sybase lub Microsoft SQL Server) 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3
timescaledb Umożliwia skalowalne wstawianie i złożone zapytania dotyczące danych szeregów czasowych Nie dotyczy 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 1.7.4 ✔️
tsm_system_rows TABLESAMPLE, metoda, która akceptuje liczbę wierszy jako limit 1.0 1.0 1.0 1.0 1.0 1.0
tsm_system_time TABLESAMPLE, metoda, która akceptuje czas w milisekundach jako limit 1.0 1.0 1.0 1.0 1.0 1.0
unaccent Słownik wyszukiwania tekstu, który usuwa akcenty 1.1 1.1 1.1 1.1 1.1 1.1
uuid-ossp Generowanie unikatowych identyfikatorów (UUID) 1.1 1.1 1.1 1.1 1.1 1.1
Wektor Typ danych wektorów i metody dostępu ivfflat i hnsw 0.6.1 0.6.1 0.6.1 0.6.1 0.6.1 0.5.1

dblink i postgres_fdw umożliwiają nawiązywanie połączenia z jednego wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL do innego lub z inną bazą danych na tym samym serwerze. Serwer elastyczny usługi Azure Database for PostgreSQL obsługuje zarówno połączenia przychodzące, jak i wychodzące z dowolnym serwerem PostgreSQL. Serwer wysyłający musi zezwalać na połączenia wychodzące z serwerem odbierający. Podobnie serwer odbierający musi zezwalać na połączenia z serwera wysyłającego.

Zalecamy wdrożenie serwerów za pomocą integracji z siecią wirtualną, jeśli planujesz używać tych dwóch rozszerzeń. Domyślnie integracja sieci wirtualnej umożliwia nawiązywanie połączeń między serwerami w sieci wirtualnej. Możesz również użyć sieci wirtualnej sieciowych grup zabezpieczeń w celu dostosowania dostępu.

pg_prewarm

Rozszerzenie pg_prewarm ładuje dane relacyjne do pamięci podręcznej. Wstępne tworzenie pamięci podręcznych oznacza, że zapytania mają lepsze czasy odpowiedzi podczas pierwszego uruchomienia po ponownym uruchomieniu. Funkcja automatycznego warmu nie jest obecnie dostępna na serwerze elastycznym usługi Azure Database for PostgreSQL.

pg_cron

pg_cron jest prostym, opartym na cron harmonogramie zadań dla bazy danych PostgreSQL, który działa wewnątrz bazy danych jako rozszerzenie. Rozszerzenie pg_cron może służyć do uruchamiania zaplanowanych zadań konserwacji w bazie danych PostgreSQL. Można na przykład uruchomić okresowe opróżnienie tabeli lub usunąć stare zadania danych.

pg_cron program może uruchamiać wiele zadań równolegle, ale jednocześnie uruchamia co najwyżej jedno wystąpienie zadania. Jeśli drugi przebieg ma rozpoczynać się przed pierwszym zakończeniem, drugi przebieg jest kolejkowany i uruchamiany natychmiast po zakończeniu pierwszego przebiegu. Dzięki temu zadania są uruchamiane dokładnie tyle razy, ile zaplanowano, i nie są uruchamiane współbieżnie z samymi sobą.

Kilka przykładów:

Aby usunąć stare dane w sobotę o 3:30 (GMT)

SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);

Aby codziennie uruchamiać próżnię o godzinie 10:00 (GMT) w domyślnej bazie danych "postgres"

SELECT cron.schedule('0 10 * * *', 'VACUUM');

Aby cofnąć wszystkie zadania z pg_cron

SELECT cron.unschedule(jobid) FROM cron.job;

Aby wyświetlić wszystkie zadania aktualnie zaplanowane przy użyciu pg_cron

SELECT * FROM cron.job;

Aby codziennie uruchamiać próżnię o godzinie 10:00 (GMT) w bazie danych "testcron" w ramach konta roli azure_pg_admin

SELECT cron.schedule_in_database('VACUUM','0 10 * * * ','VACUUM','testcron',null,TRUE)

Uwaga

rozszerzenie pg_cron jest wstępnie ładowane w shared_preload_libraries dla każdego wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL wewnątrz bazy danych postgres, aby zapewnić możliwość planowania zadań do uruchamiania w innych bazach danych w ramach wystąpienia elastycznej bazy danych serwera usługi Azure Database for PostgreSQL bez naruszania zabezpieczeń. Jednak ze względów bezpieczeństwa nadal trzeba zezwolić na listę pg_cron rozszerzenia i zainstalować je za pomocą polecenia CREATE EXTENSION .

Począwszy od pg_cron wersji 1.4, możesz użyć funkcji cron.schedule_in_database i cron.alter_job, aby zaplanować zadanie w określonej bazie danych i zaktualizować istniejący harmonogram odpowiednio.

Oto niektóre przykłady:

Aby usunąć stare dane w sobotę o godzinie 3:30 (GMT) w bazie danych DBName

SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');

Uwaga

funkcja cron_schedule_in_database umożliwia używanie nazwy użytkownika jako parametru opcjonalnego. Ustawienie nazwy użytkownika na wartość inną niż null wymaga uprawnień administratora postgreSQL i nie jest obsługiwane na serwerze elastycznym usługi Azure Database for PostgreSQL. W poprzednich przykładach pokazano uruchamianie tej funkcji z opcjonalnym parametrem nazwy użytkownika pominiętym lub ustawionym na wartość null, która uruchamia zadanie w kontekście planowania zadania przez użytkownika, które powinno mieć azure_pg_admin uprawnienia roli.

Aby zaktualizować lub zmienić nazwę bazy danych dla istniejącego harmonogramu

select cron.alter_job(job_id:=MyJobID,database:='NewDBName');

pg_failover_slots (wersja zapoznawcza)

Rozszerzenie PG Failover Slots rozszerza serwer elastyczny usługi Azure Database for PostgreSQL podczas pracy z replikacją logiczną i serwerami z włączoną wysoką dostępnością. Skutecznie rozwiązuje to wyzwanie w ramach standardowego aparatu PostgreSQL, który nie zachowuje miejsc replikacji logicznej po przejściu w tryb failover. Utrzymanie tych miejsc ma kluczowe znaczenie, aby zapobiec wstrzymaniu replikacji lub niezgodności danych podczas zmian roli serwera podstawowego, zapewniając ciągłość działania i integralność danych.

Rozszerzenie usprawnia proces pracy w trybie failover, zarządzając niezbędnym transferem, oczyszczaniem i synchronizacją miejsc replikacji, zapewniając w ten sposób bezproblemowe przejście podczas zmian roli serwera. Rozszerzenie jest obsługiwane w przypadku bazy danych PostgreSQL w wersji od 16 do 11.

Więcej informacji i sposobu korzystania z rozszerzenia PG Failover Slots można znaleźć na swojej stronie usługi GitHub.

Włączanie pg_failover_slots

Aby włączyć rozszerzenie PG Failover Slots dla wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL, należy zmodyfikować konfigurację serwera, włączając rozszerzenie w udostępnionych bibliotekach wstępnego ładowania serwera i dostosowując określony parametr serwera. Proces jest następujący:

  1. Dodaj pg_failover_slots do udostępnionych bibliotek wstępnego ładowania serwera, aktualizując shared_preload_libraries parametr .
  2. Zmień parametr hot_standby_feedback serwera na on.

Wszelkie zmiany parametru shared_preload_libraries wymagają ponownego uruchomienia serwera, aby zaczęły obowiązywać.

Wykonaj następujące kroki w witrynie Azure Portal:

  1. Zaloguj się do witryny Azure Portal i przejdź do strony wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL.
  2. W menu po lewej stronie wybierz pozycję Parametry serwera.
  3. Znajdź parametr na liście i zmodyfikuj shared_preload_libraries jego wartość, aby uwzględnić pg_failover_slotswartość .
  4. hot_standby_feedback Wyszukaj parametr i ustaw jego wartość na on.
  5. Wybierz pozycję Zapisz , aby zachować zmiany. Teraz będziesz mieć możliwość zapisywania i ponownego uruchamiania. Wybierz tę opcję, aby upewnić się, że zmiany zostaną zastosowane, ponieważ modyfikacja shared_preload_libraries wymaga ponownego uruchomienia serwera.

Po wybraniu pozycji Zapisz i uruchom ponownie serwer automatycznie uruchomi ponownie, stosując wprowadzone zmiany. Gdy serwer wróci do trybu online, rozszerzenie PG Failover Slots jest włączone i działa w podstawowym wystąpieniu serwera elastycznego usługi Azure Database for PostgreSQL, gotowe do obsługi miejsc replikacji logicznej podczas pracy w trybie failover.

pg_stat_statements

Rozszerzenie pg_stat_statements udostępnia widok wszystkich zapytań uruchomionych w bazie danych. Jest to przydatne, aby zrozumieć, jak wygląda wydajność obciążenia zapytań w systemie produkcyjnym.

Rozszerzenie pg_stat_statements jest wstępnie ładowane w shared_preload_libraries w każdym wystąpieniu serwera elastycznego usługi Azure Database for PostgreSQL w celu zapewnienia sposobu śledzenia statystyk wykonywania instrukcji SQL. Jednak ze względów bezpieczeństwa nadal musisz zezwolić na listępg_stat_statements rozszerzenia i zainstalować je przy użyciu polecenia CREATE EXTENSION . Ustawienie pg_stat_statements.track, które kontroluje, które instrukcje są liczone przez rozszerzenie, domyślnie ma wartość , co oznacza, że wszystkie instrukcje topwydane bezpośrednio przez klientów są śledzone. Dwa pozostałe poziomy śledzenia to none i all. To ustawienie można skonfigurować jako parametr serwera.

Istnieje kompromis między informacjami wykonywania zapytania, pg_stat_statements zapewnia i wpływ na wydajność serwera podczas rejestrowania każdej instrukcji SQL. Jeśli nie korzystasz aktywnie z rozszerzenia pg_stat_statements, zalecamy ustawienie wartości pg_stat_statements.tracknone. Niektóre usługi monitorowania innych firm mogą polegać na pg_stat_statements do dostarczania szczegółowych informacji o wydajności zapytań, więc upewnij się, czy jest to dla Ciebie, czy nie.

Baza danych TimescaleDB

TimescaleDB to baza danych szeregów czasowych spakowana jako rozszerzenie dla bazy danych PostgreSQL. Baza danych TimescaleDB zapewnia funkcje analityczne, optymalizacje i skalowanie bazy danych Postgres dla obciążeń szeregów czasowych. Dowiedz się więcej na temat bazy danych TimescaleDB, zarejestrowanego znaku towarowego Timescale, Inc. Elastycznego serwera usługi Azure Database for PostgreSQL, który udostępnia wersję Apache-2 bazy danych TimescaleDB.

Instalowanie bazy danych TimescaleDB

Aby zainstalować bazę danych TimescaleDB, oprócz tego, aby zezwolić na jej wyświetlenie, jak pokazano powyżej, należy uwzględnić ją w udostępnionych bibliotekach wstępnego ładowania serwera. Zmiana parametru shared_preload_libraries bazy danych Postgres wymaga , aby ponowne uruchomienie serwera miało zastosowanie. Parametry można zmienić przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure. Korzystanie z witryny Azure Portal:

  1. Wybierz wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL.

  2. Na pasku bocznym wybierz pozycję Parametry serwera.

  3. shared_preload_libraries Wyszukaj parametr .

  4. Wybierz pozycję TimescaleDB.

  5. Wybierz pozycję Zapisz , aby zachować zmiany. Po zapisaniu zmiany otrzymasz powiadomienie.

  6. Po powiadomieniu uruchom ponownie serwer, aby zastosować te zmiany.

Teraz możesz włączyć bazę danych TimescaleDB w elastycznej bazie danych serwera usługi Azure Database for PostgreSQL. Połączenie do bazy danych i wydaj następujące polecenie:

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

Napiwek

Jeśli zostanie wyświetlony błąd, upewnij się, że serwer został uruchomiony ponownie po zapisaniu shared_preload_libraries.

Teraz możesz utworzyć hipertable bazy danych TimescaleDB od podstaw lub zmigrować istniejące dane szeregów czasowych w usłudze PostgreSQL.

Przywracanie bazy danych skali czasu przy użyciu pg_dump i pg_restore

Aby przywrócić bazę danych skali czasu przy użyciu pg_dump i pg_restore, należy uruchomić dwie procedury pomocnicze w docelowej bazie danych: timescaledb_pre_restore() i timescaledb_post restore().

Najpierw przygotuj docelową bazę danych:

--create the new database where you'll perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database
CREATE EXTENSION timescaledb;

SELECT timescaledb_pre_restore();

Teraz możesz uruchomić pg_dump w oryginalnej bazie danych, a następnie wykonać pg_restore. Po przywróceniu pamiętaj, aby uruchomić następujące polecenie w przywróconej bazie danych:

SELECT timescaledb_post_restore();

Aby uzyskać więcej informacji na temat metody przywracania z włączoną bazą danych w skali czasu, zobacz dokumentację skali czasu

Przywracanie bazy danych w skali czasu przy użyciu kopii zapasowej bazy danych timescaledb

Podczas uruchamiania SELECT timescaledb_post_restore() procedury wymienionej powyżej możesz uzyskać błąd odmowy uprawnień podczas aktualizowania flagi timescaledb.restoring. Jest to spowodowane ograniczonymi uprawnieniami ALTER DATABASE w usługach baz danych PaaS w chmurze. W takim przypadku możesz wykonać alternatywną metodę przy użyciu timescaledb-backup narzędzia do tworzenia kopii zapasowych i przywracania bazy danych w skali czasu. Kopia zapasowa bazy danych Timescaledb to program umożliwiający zrzucanie i przywracanie bazy danych TimescaleDB prostsze, mniej podatne na błędy i bardziej wydajne.
W tym celu należy wykonać następujące czynności:

  1. Zainstaluj narzędzia zgodnie z opisem w tym miejscu
  2. Tworzenie docelowego wystąpienia serwera elastycznego i bazy danych usługi Azure Database for PostgreSQL
  3. Włącz rozszerzenie skali czasu, jak pokazano powyżej
  4. Udzielanie roli azure_pg_admin użytkownikowi, który będzie używany przez funkcję ts-restore
  5. Uruchamianie funkcji ts-restore w celu przywrócenia bazy danych

Więcej informacji na temat tych narzędzi można znaleźć tutaj.

Uwaga

W przypadku korzystania z timescale-backup narzędzi do przywracania na platformę Azure, ponieważ nazwy użytkowników bazy danych dla pojedynczego serwera usługi Azure Database for PostgreSQL muszą używać <user@db-name> formatu, należy zastąpić @%40 kodowaniem znaków.

pg_hint_plan

pg_hint_plan umożliwia dostosowanie planów wykonywania bazy danych PostgreSQL przy użyciu tak zwanych "wskazówek" w komentarzach SQL, takich jak

/*+ SeqScan(a) */

pg_hint_plan odczytuje frazy sugerujące w komentarzu specjalnego formularza podanego przy użyciu docelowej instrukcji SQL. Formularz specjalny zaczyna się od sekwencji znaków "/*+" i kończy się znakiem "*/". Frazy wskazówek składają się z nazwy wskazówek i następujących parametrów ujętych w nawiasy i rozdzielonych spacjami. Nowe wiersze umożliwiające czytelność mogą rozdzielać poszczególne frazy wskazówek.

Przykład:

  /*+
      HashJoin(a b)
      SeqScan(a)
    */
    SELECT *
      FROM pgbench_branches b
      JOIN pgbench_accounts an ON b.bid = a.bid
     ORDER BY a.aid;

Powyższy przykład powoduje, że planista używa wyników seq scan tabeli a do połączenia z tabelą b jako .hash join

Aby zainstalować pg_hint_plan, oprócz tego, aby zezwolić na jego wyświetlenie, jak pokazano powyżej, należy uwzględnić go w udostępnionych bibliotekach wstępnego ładowania serwera. Zmiana parametru shared_preload_libraries bazy danych Postgres wymaga , aby ponowne uruchomienie serwera miało zastosowanie. Parametry można zmienić przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure. Korzystanie z witryny Azure Portal:

  1. Wybierz wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL.

  2. Na pasku bocznym wybierz pozycję Parametry serwera.

  3. shared_preload_libraries Wyszukaj parametr .

  4. Wybierz pozycję pg_hint_plan.

  5. Wybierz pozycję Zapisz , aby zachować zmiany. Po zapisaniu zmiany otrzymasz powiadomienie.

  6. Po powiadomieniu uruchom ponownie serwer, aby zastosować te zmiany.

Teraz możesz włączyć pg_hint_plan elastycznej bazy danych serwera usługi Azure Database for PostgreSQL. Połączenie do bazy danych i wydaj następujące polecenie:

CREATE EXTENSION  pg_hint_plan ;

pg_buffercache

Pg_buffercache umożliwia badanie zawartości shared_buffers. Za pomocą tego rozszerzenia można określić, czy określona relacja jest buforowana, czy nie (w shared_buffers). To rozszerzenie może pomóc w rozwiązywaniu problemów z wydajnością (problemy z wydajnością związane z buforowaniem)

Jest to część contrib i łatwo jest zainstalować to rozszerzenie.

CREATE EXTENSION pg_buffercache;

Rozszerzenia i uaktualnienie wersji głównej

Serwer elastyczny usługi Azure Database for PostgreSQL wprowadził funkcję uaktualniania wersji głównej, która wykonuje uaktualnienie w miejscu wystąpienia elastycznego serwera usługi Azure Database for PostgreSQL za pomocą zaledwie jednego kliknięcia. Uaktualnienie wersji głównej w miejscu upraszcza proces uaktualniania serwera elastycznego usługi Azure Database for PostgreSQL, minimalizując zakłócenia dla użytkowników i aplikacji, które uzyskują dostęp do serwera. Uaktualnienie wersji głównej w miejscu nie obsługuje określonych rozszerzeń i istnieją pewne ograniczenia dotyczące uaktualniania niektórych rozszerzeń. Rozszerzenia Timescaledb, pgaudit, dblink, orafce i postgres_fdw nie są obsługiwane dla wszystkich wersji serwera elastycznego usługi Azure Database for PostgreSQL w przypadku korzystania z funkcji aktualizacji wersji głównej w miejscu.