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:
- Wybierz wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL.
- Na pasku bocznym wybierz pozycję Parametry serwera.
azure.extensions
Wyszukaj parametr .- Wybierz rozszerzenia, które chcesz zezwolić na listę.
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:
- Wybierz wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL.
- Na pasku bocznym wybierz pozycję Parametry serwera.
shared_preload_libraries
Wyszukaj parametr .- Wybierz rozszerzenia, które chcesz dodać.
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
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:
- Dodaj
pg_failover_slots
do udostępnionych bibliotek wstępnego ładowania serwera, aktualizującshared_preload_libraries
parametr . - Zmień parametr
hot_standby_feedback
serwera naon
.
Wszelkie zmiany parametru shared_preload_libraries
wymagają ponownego uruchomienia serwera, aby zaczęły obowiązywać.
Wykonaj następujące kroki w witrynie Azure Portal:
- Zaloguj się do witryny Azure Portal i przejdź do strony wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL.
- W menu po lewej stronie wybierz pozycję Parametry serwera.
- Znajdź parametr na liście i zmodyfikuj
shared_preload_libraries
jego wartość, aby uwzględnićpg_failover_slots
wartość . hot_standby_feedback
Wyszukaj parametr i ustaw jego wartość naon
.- 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 top
wydane 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.track
none
. 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:
Wybierz wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL.
Na pasku bocznym wybierz pozycję Parametry serwera.
shared_preload_libraries
Wyszukaj parametr .Wybierz pozycję TimescaleDB.
Wybierz pozycję Zapisz , aby zachować zmiany. Po zapisaniu zmiany otrzymasz powiadomienie.
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:
- Zainstaluj narzędzia zgodnie z opisem w tym miejscu
- Tworzenie docelowego wystąpienia serwera elastycznego i bazy danych usługi Azure Database for PostgreSQL
- Włącz rozszerzenie skali czasu, jak pokazano powyżej
- Udzielanie roli azure_pg_admin użytkownikowi, który będzie używany przez funkcję ts-restore
- 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:
Wybierz wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL.
Na pasku bocznym wybierz pozycję Parametry serwera.
shared_preload_libraries
Wyszukaj parametr .Wybierz pozycję pg_hint_plan.
Wybierz pozycję Zapisz , aby zachować zmiany. Po zapisaniu zmiany otrzymasz powiadomienie.
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.