PostgreSQL-Erweiterungen in Azure Database for PostgreSQL Flexible Server
GILT FÜR: Azure Database for PostgreSQL – Flexible Server
Azure Database for PostgreSQL – Flexible Server bietet die Möglichkeit zum Erweitern der Funktionalität von Datenbanken mithilfe von Erweiterungen. Bei Erweiterungen werden mehrere zusammengehörige SQL-Objekte zu einem Paket gebündelt und mit nur einem Befehl in die Datenbank geladen oder daraus entfernt. Nach dem Laden in die Datenbank funktionieren Erweiterungen genauso wie integrierte Features.
Wie werden PostgreSQL-Erweiterungen verwendet?
Bevor Sie Erweiterungen in Azure Database for PostgreSQL – Flexible Server installieren, müssen Sie diese Erweiterungen in die Positivliste aufnehmen.
Verwenden des Azure-Portals:
- Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
- Wählen Sie auf der Seitenleiste Serverparameter aus.
- Suchen Sie nach dem Parameter
azure.extensions
. - Wählen Sie Erweiterungen aus, die Sie in die Positivliste aufnehmen möchten.
Verwenden der Azure CLI:
Sie können der Positivliste Erweiterungen über Befehle des CLI-Parametersatzes hinzufügen.
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>
Verwenden einer ARM-Vorlage: Das Beispiel unten fügt der Positivliste die Erweiterungen dblink, dict_xsyn, pg_buffercache auf dem Server mypostgreserver hinzu.
{
"$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
ist ein Serverkonfigurationsparameter, der bestimmt, welche Bibliotheken beim Starten von Azure Database for PostgreSQL – Flexible Server geladen werden sollen. Alle Bibliotheken, die freigegebenen Speicher verwenden, müssen über diesen Parameter geladen werden. Wenn Ihre Erweiterung freigegebenen, im voraus geladenen Bibliotheken hinzugefügt werden muss, können Sie folgendermaßen vorgehen:
Verwenden des Azure-Portals:
- Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
- Wählen Sie auf der Seitenleiste Serverparameter aus.
- Suchen Sie nach dem Parameter
shared_preload_libraries
. - Wählen Sie Erweiterungen aus, die Sie hinzufügen möchten.
Verwenden der Azure CLI:
Sie können shared_preload_libraries
über Befehle des CLI-Parametersatzes hinzufügen.
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>
Nachdem Sie Erweiterungen in die Positivliste aufgenommen und geladen haben, müssen Sie diese in Ihrer Datenbank installieren, bevor Sie sie verwenden können. Zur Installation einer bestimmten Erweiterung führen Sie den Befehl CREATE EXTENSION aus. Dieser Befehl lädt die Objektpakete in Ihre Datenbank.
Hinweis
Erweiterungen von Drittanbietern, die in Azure Database for PostgreSQL – Flexible Server angeboten werden, sind Open Source-lizenzierter Code. Derzeit bieten wir keine Erweiterungen oder Erweiterungsversionen von Drittanbietern mit Premium- oder proprietären Lizenzierungsmodellen an.
Die Instanz von Azure Database for PostgreSQL – Flexible Server unterstützt einen Teil der wichtigsten PostgreSQL-Erweiterungen, die unten aufgeführt sind. Sie können diese Informationen auch abrufen, indem Sie SHOW azure.extensions;
ausführen. Erweiterungen, die in diesem Artikel nicht aufgeführt sind, werden für Azure Database for PostgreSQL – Flexible Server nicht unterstützt. Sie können in Azure Database for PostgreSQL – Flexible Server keine eigenen Erweiterungen erstellen oder laden.
Erweiterungsversionen
Die folgenden Erweiterungen sind für Azure Database for PostgreSQL – Flexible Server verfügbar:
Hinweis
Erweiterungen in der folgenden Tabelle mit dem Häkchen (✔️) erfordern, dass die entsprechenden Bibliotheken im shared_preload_libraries-Serverparameter aktiviert werden.
Erweiterungs-Name | Beschreibung | PostgreSQL 16 | PostgreSQL 15 | PostgreSQL 14 | PostgreSQL 13 | PostgreSQL 12 | PostgreSQL 11 |
---|---|---|---|---|---|---|---|
address_standardizer | Wird verwendet, um eine Adresse in dessen zugehörige Elemente zu analysieren. Wird allgemein als Unterstützung für den Normalisierungsschritt zur Geocodierung von Adressen verwendet. | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
address_standardizer_data_us | Adressenstandardisierung: US-Datasetbeispiel | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
amcheck | Funktionen zum Überprüfen der Beziehungsintegrität | 1.3 | 1.3 | 1.3 | 1.2 | 1.2 | 1.1 |
anon (Vorschau) | Tools fÜr Daten-Anonymisierung | 1.2.0 ✔️ | 1.2.0 ✔️ | 1.2.0 ✔️ | 1.2.0 ✔️ | 1.2.0 ✔️ | 1.2.0 ✔️ |
azure_ai | Integration von Azure AI und ML Services für PostgreSQL | 1.0.0 | 1.0.0 | 1.0.0 | 1.0.0 | – | – |
azure_storage | Azure-Integration für PostgreSQL | 1.4 ✔️ | 1.4 ✔️ | 1.4 ✔️ | 1.4 ✔️ | 1.4 ✔️ | N/V |
bloom | Bloom-Zugriffsmethode: Index, der auf einer Signaturdatei basiert | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
btree_gin | Unterstützung für die Indizierung häufiger Datentypen in GIN | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
btree_gist | Unterstützung für die Indizierung häufiger Datentypen in GIST | 1.7 | 1.7 | 1.6 | 1.5 | 1.5 | 1.5 |
citext | Datentyp für Zeichenfolgen ohne Berücksichtigung der Groß-/Kleinschreibung | 1.6 | 1.6 | 1.6 | 1.6 | 1.6 | 1.5 |
cube | Datentyp für mehrdimensionale Cubes | 1.5 | 1.5 | 1.5 | 1.4 | 1.4 | 1.4 |
dblink | Verbindungsherstellung mit anderen PostgreSQL-Datenbanken aus einer Datenbank | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
dict_int | Textsuche-Wörterbuchvorlage für Integerwerte | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
dict_xsyn | Wörterbuchvorlage für die Textsuche für die erweiterte Verarbeitung von Synonymen | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
earthdistance | Berechnung von Großkreisentfernungen auf der Erdoberfläche | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
fuzzystrmatch | Ermittlung von Ähnlichkeiten und der Entfernung zwischen Zeichenfolgen | 1.2 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
hstore | Datentyp zum Speichern von Schlüssel-Wert-Paaren | 1.8 | 1.8 | 1.8 | 1.7 | 1.6 | 1.5 |
hypopg | Hypothetische Indizes für PostgreSQL | 1.4.0 | 1.4.0 | 1.4.0 | 1.4.0 | 1.4.0 | 1.4.0 |
intagg | Ganzzahlaggregator und Enumerator (veraltet) | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
intarray | Funktionen, Operatoren und Indexunterstützung für 1-D-Arrays mit Integerwerten | 1.5 | 1.5 | 1.5 | 1.3 | 1.2 | 1.2 |
isn | Datentypen für internationale Produktnummerierungsnormen | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
lo | Wartung großer Objekte | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
login_hook | Login_hook – Hook zum Ausführen von login_hook.login() zur Anmeldezeit | 1.5 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 |
ltree | Datentyp für hierarchische baumähnliche Strukturen | 1.2 | 1.2 | 1.2 | 1.2 | 1.1 | 1.1 |
orafce | Funktionen und Bediener zum Emulieren einer Teilmenge von Funktionen und Paketen aus der Oracle RDBMS | 4.4 | 3,24 | 3.18 | 3.18 | 3.18 | 3,7 |
pageinspect | Überprüft den Inhalt von Datenbankseiten im Detail | 1.12 | 1.11 | 1.9 | 1.8 | 1.7 | 1.7 |
pgaudit | Überwachungsfunktionen | 16.0 ✔️ | 1.7 ✔️ | 1.6.2 ✔️ | 1.5 ✔️ | 1.4 ✔️ | 1.3.2 ✔️ |
pg_buffercache | Untersuchung des freigegebenen Puffercaches | 1.4 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
pg_cron | Auftragsplaner für PostgreSQL | 1.5 ✔️ | 1.4-1 ✔️ | 1.4-1 ✔️ | 1.4-1 ✔️ | 1.4-1 ✔️ | 1.4-1 ✔️ |
pgcrypto | Kryptografische Funktionen | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
pg_failover_slots (Vorschau) | Logischer Replikationsslot-Manager für Failoverzwecke | 1.0.1 | 1.0.1 | 1.0.1 | 1.0.1 | 1.0.1 | 1.0.1 |
pg_freespacemap | Untersucht Free Space Map (FSM) | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pg_hint_plan | Ermöglicht, PostgreSQL-Ausführungspläne mithilfe sogenannter Hinweise in SQL-Kommentaren zu optimieren. | 1.6.0 ✔️ | 1.5 ✔️ | 1.4 ✔️ | 1.3.7 ✔️ | 1.3.7 ✔️ | 1.3.7 ✔️ |
pglogisch | Logische Replikation von PostgreSQL | 2.4.4 ✔️ | 2.4.2 ✔️ | 2.4.1 ✔️ | 2.4.1 ✔️ | 2.4.1 ✔️ | 2.4.1 ✔️ |
pg_partman | Erweiterung für die Verwaltung partitionierter Tabellen nach Zeit oder ID | 4.7.1 ✔️ | 4.7.1 ✔️ | 4.6.1 ✔️ | 4.5.0 ✔️ | 4.5.0 ✔️ | 4.5.0 ✔️ |
pg_prewarm | „Vorwärmung“ von Beziehungsdaten | 1.2 ✔️ | 1.2 ✔️ | 1.2 ✔️ | 1.2 ✔️ | 1.2 ✔️ | 1.2 ✔️ |
pg_repack | Organisieren Sie Tabellen in PostgreSQL-Datenbanken mit minimalen Sperren neu | 1.4.7 | 1.4.7 | 1.4.7 | 1.4.7 | 1.4.7 | 1.4.7 |
pgrouting | PgRouting-Erweiterung | N/V | 3.5.0 | 3.3.0 | 3.3.0 | 3.3.0 | 3.3.0 |
pgrowlocks | Anzeige von Sperrinformationen auf Zeilenebene | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pg_squeeze | Ein Tool zum Entfernen nicht verwendeter Leerzeichen aus einer Beziehung. | 1.6 ✔️ | 1.6 ✔️ | 1.5 ✔️ | 1.5 ✔️ | 1.5 ✔️ | 1.5 ✔️ |
pg_stat_statements | Nachverfolgung von Ausführungsstatistiken aller ausgeführten SQL-Anweisungen | 1.10 ✔️ | 1.10 ✔️ | 1.9 ✔️ | 1.8 ✔️ | 1.7 ✔️ | 1.6 ✔️ |
pgstattuple | Anzeige von Statistiken auf Tupelebene | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 |
pg_trgm | Messung von Textähnlichkeit und Indexsuche basierend auf Trigrammen | 1.6 | 1.6 | 1.6 | 1.5 | 1.4 | 1.4 |
pg_visibility | Überprüft die Informationen zur Zuordnung von Sichtbarkeiten (VM) und Sichtbarkeit auf Seitenebene | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
plpgsql | PL/pgSQL: Prozedurale Sprache | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
plv8 | PL/JavaScript (v8): Vertrauenswürdige prozedurale Sprache | 3.1.7 | 3.1.7 | 3.0.0 | 3.0.0 | 3.0.0 | 3.0.0 |
postgis | PostGIS-Geometrie und geografische räumliche Typen und Funktionen | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_raster | PostGIS-Rastertypen und -Funktionen | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_sfcgal | PostGIS SFCGAL-Funktionen | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_tiger_geocoder | PostGIS Tiger: Geocoder und Reverse-Geocoder | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_topology | PostGIS-Topologie: Räumliche Typen und Funktionen | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgres_fdw | Fremddaten-Wrapper für PostgreSQL-Remoteserver | 1.1 | 1.1 | 1.1 | 1.0 | 1.0 | 1.0 |
semver | Datentyp der semantischen Version | 0.32.1 | 0.32.0 | 0.32.0 | 0.32.0 | 0.32.0 | 0.32.0 |
session_variable | Session_variable – Registrierung und Manipulation von Sitzungsvariablen und Konstanten | 3.3 | 3.3 | 3.3 | 3.3 | 3.3 | 3.3 |
sslinfo | Informationen zu SSL-Zertifikaten | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
tablefunc | Funktionen zum Bearbeiten gesamter Tabellen, einschließlich Kreuztabelle | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
tds_fdw | Fremddatenwrapper zum Abfragen einer TDS-Datenbank (Sybase oder Microsoft SQL Server) | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3 |
timescaledb | Ermöglichung von skalierbaren Einfügungen und komplexen Abfragen für Zeitreihendaten | N/V | 2.10.0 ✔️ | 2.10.0 ✔️ | 2.10.0 ✔️ | 2.10.0 ✔️ | 1.7.4 ✔️ |
tsm_system_rows | TABLESAMPLE-Methode, die die Anzahl von Zeilen als Grenzwert akzeptiert | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
tsm_system_time | TABLESAMPLE-Methode, die die Zeit in Millisekunden als Grenzwert akzeptiert | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
unaccent | Wörterbuch für Textsuche mit Entfernung von Akzenten | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
uuid-ossp | Generiert universell eindeutige Bezeichner (UUIDs) | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
vector | Vektordatentyp und Ivfflat- und hnsw-Zugriffsmethoden | 0.6.1 | 0.6.1 | 0.6.1 | 0.6.1 | 0.6.1 | 0.5.1 |
„dblink“ und „postgres_fdw“
dblink und postgres_fdw ermöglichen Ihnen das Herstellen einer Verbindung von einer Instanz von Azure Database for PostgreSQL – Flexible Server mit einem anderen oder mit einer anderen Datenbank auf demselben Server. Azure Database for PostgreSQL – Flexible Server unterstützen sowohl eingehende als auch ausgehende Verbindungen mit beliebigen PostgreSQL-Servern. Der sendende Server muss ausgehende Verbindungen vom empfangenden Server zulassen. Ebenso muss der empfangende Server Verbindungen vom sendenden Server zulassen.
Es wird empfohlen, die Server mit Virtual Network-Integration bereitzustellen, wenn Sie beabsichtigen, diese beiden Erweiterungen zu verwenden. Standardmäßig lässt die Virtual Network-Integration Verbindungen zwischen Servern im virtuellen Netzwerk zu. Sie können auch Virtual Network-Sicherheitsgruppen verwenden, um den Zugriff anzupassen.
pg_prewarm
Die pg_prewarm-Erweiterung lädt relationale Daten in den Cache. Durch das Vorwärmen der Caches weisen Ihre Abfragen bei der ersten Ausführung nach einem Neustart bessere Reaktionszeiten auf. Die automatische Vorwärmfunktion ist in Azure Database for PostgreSQL – Flexible Server aktuell nicht verfügbar.
pg_cron
pg_cron ist ein einfacher, cron-basierter Auftragsplaner für PostgreSQL, der in der Datenbank als Erweiterung ausgeführt wird. Mithilfe der „pg_cron“-Erweiterung können geplante Wartungstasks in einer PostgreSQL-Datenbank ausgeführt werden. Beispielsweise können Sie eine Tabelle regelmäßig mit „vacuum“ bereinigen oder alte Datenaufträge entfernen.
pg_cron
kann mehrere Aufträge parallel ausführen, aber jeweils höchstens eine Instanz eines Auftrags. Wenn eine zweite Ausführung gestartet werden soll, bevor die erste Ausführung abgeschlossen wurde, wird die zweite Ausführung in die Warteschlange eingereiht und nach Abschluss der ersten Ausführung gestartet. Dadurch wird sichergestellt, dass Aufträge genau so oft wie geplant und nicht gleichzeitig ausgeführt werden.
Einige Beispiele:
So löschen Sie alte Daten am Samstag um 03:30 Uhr (GMT)
SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);
Ausführen von „Vaccuum“ jeden Tag um 10:00 Uhr (GMT) in der Standarddatenbank „postgres“
SELECT cron.schedule('0 10 * * *', 'VACUUM');
So heben Sie den Zeitplan für alle Tasks aus „pg_cron“ auf
SELECT cron.unschedule(jobid) FROM cron.job;
Anzeigen aller derzeit mit „pg_cron“ geplanten Aufträge
SELECT * FROM cron.job;
Ausführen von „Vacuum“ jeden Tag um 10:00 Uhr (GMT) in der Datenbank „testcron“ über das Konto der Rolle „azure_pg_admin“
SELECT cron.schedule_in_database('VACUUM','0 10 * * * ','VACUUM','testcron',null,TRUE)
Hinweis
Die Erweiterung „pg_cron“ ist in jeder Instanz von Azure Database for PostgreSQL – Flexible Server in der „postgres“-Datenbank vorab geladen, um Ihnen die Möglichkeit zu geben, Aufträge für die Ausführung in anderen Datenbanken in Ihrer Datenbankinstanz von Azure Database for PostgreSQL – Flexible Server ohne Beeinträchtigung der Sicherheit zu planen. Aus Sicherheitsgründen müssen Sie jedoch weiterhin die Erweiterung „pg_cron“ in die Zulassungsliste aufnehmen und sie mithilfe des Befehls CREATE EXTENSION installieren.
Ab Version 1.4 von pg_cron können Sie die Funktionen cron.schedule_in_database und cron.alter_job verwenden, um Ihren Auftrag in einer bestimmten Datenbank zu planen bzw. um einen vorhandenen Zeitplan zu aktualisieren.
Einige Beispiele:
So löschen Sie alte Daten am Samstag um 03:30 Uhr (GMT) in der Datenbank „DBName“
SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');
Hinweis
Mit der Funktion cron_schedule_in_database können Sie den Benutzernamen als optionalen Parameter festlegen. Das Festlegen des Benutzernamens auf einen Wert ungleich Null erfordert PostgreSQL-Superuserrechte und wird in Azure Database for PostgreSQL – Flexible Server nicht unterstützt. Die obigen Beispiele zeigen die Ausführung dieser Funktion mit einem optionalen Benutzernamenparameter, der nicht angegeben oder auf Null festgelegt ist, wodurch der Auftrag im Kontext der Benutzerplanung des Auftrags ausgeführt wird, der azure_pg_admin Rollenberechtigungen aufweisen sollte.
So aktualisieren oder ändern Sie den Datenbanknamen für den vorhandenen Zeitplan
select cron.alter_job(job_id:=MyJobID,database:='NewDBName');
pg_failover_slots (Vorschau)
Die Erweiterung für PG-Failoverslots verbessert Azure Database for PostgreSQL – Flexible Server, wenn sowohl mit logischer Replikation als auch mit hochverfügbaren Servern gearbeitet wird. Sie behebt effektiv die Herausforderung innerhalb des standardmäßigen PostgreSQL-Moduls, das logische Replikationsslots nach einem Failover nicht beibehält. Die Aufrechterhaltung dieser Slots ist wichtig, um Replikationspausen oder Datenübereinstimmungen während Änderungen der primären Serverrolle zu verhindern und die Betriebskontinuität und Datenintegrität sicherzustellen.
Die Erweiterung optimiert den Failoverprozess, indem die erforderliche Übertragung, Bereinigung und Synchronisierung von Replikationsplätzen verwaltet wird, wodurch ein nahtloser Übergang während Serverrollenänderungen gewährleistet wird. Die Erweiterung wird für die PostgreSQL-Versionen 16 bis 11 unterstützt.
Weitere Informationen und Hinweise zur Verwendung der Erweiterung für PG-Failoverslots finden Sie auf der GitHub-Seite.
pg_failover_slots aktivieren
Um die Erweiterung für PG-Failoverslots für Ihre Instanz von Azure Database for PostgreSQL – Flexible Server zu aktivieren, müssen Sie die Konfiguration des Servers ändern, indem Sie die Erweiterung in die freigegebenen Vorabladebibliotheken des Servers einschließen und einen bestimmten Serverparameter anpassen. Der Prozess hierfür ist folgender:
- Fügen Sie
pg_failover_slots
zu den freigegebenen Vorabladebibliotheken des Servers hinzu, indem Sie den Parametershared_preload_libraries
aktualisieren. - Ändern Sie den Serverparameter
hot_standby_feedback
inon
.
Damit Änderungen des Parameters shared_preload_libraries
wirksam werden, ist ein Serverneustart erforderlich.
Führen Sie im Azure-Portal die folgenden Schritte aus:
- Melden Sie sich beim Azure-Portal an, und wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
- Wählen Sie im Menü auf der linken Seite Serverparameter aus.
- Suchen Sie den Parameter
shared_preload_libraries
in der Liste, und bearbeiten Sie dessen Wert so, dass erpg_failover_slots
einschließt. - Suchen Sie nach dem Parameter
hot_standby_feedback
, und legen Sie den Wert aufon
fest. - Wählen Sie Speichern aus, um Ihre Änderungen beizubehalten. Jetzt können Sie Speichern und neu starten auswählen. Wählen Sie diese Option aus, um sicherzustellen, dass die Änderungen wirksam werden, da das Ändern von
shared_preload_libraries
einen Serverneustart erfordert.
Wenn Sie Speichern und neu starten auswählen, wird der Server automatisch neu gestartet, und die von Ihnen vorgenommenen Änderungen werden angewendet. Sobald der Server wieder online ist, wird die Erweiterung für PG-Failoverslots aktiviert und auf Ihrer primären Instanz von Azure Database for PostgreSQL – Flexible Server betriebsbereit, um logische Replikationsslots während des Failovers zu verarbeiten.
pg_stat_statements
Mit der Erweiterung „pg_stat_statements“ können Sie alle Abfragen anzeigen, die in Ihrer Datenbank ausgeführt wurden. Dies ist nützlich, um zu verstehen, wie ihre Abfrageworkloadleistung in einem Produktionssystem aussieht.
Die Erweiterung „pg_stat_statements“ ist in „shared_preload_libraries“ in jeder Instanz von Azure Database for PostgreSQL – Flexible Server vorab geladen, um Ihnen eine Möglichkeit zum Nachverfolgen von Ausführungsstatistiken von SQL-Anweisungen zu bieten.
Aus Sicherheitsgründen müssen Sie jedoch weiterhin die Erweiterung „pg_stat_statements“ in die Zulassungsliste aufnehmen und sie mithilfe des Befehls CREATE EXTENSION installieren.
Die Einstellung pg_stat_statements.track
, die steuert, welche Anweisungen von der Erweiterung gezählt werden, ist standardmäßig auf top
festgelegt, was bedeutet, dass alle Anweisungen, die direkt von Clients ausgestellt werden, nachverfolgt werden. Die beiden anderen Nachverfolgungsebenen sind none
und all
. Diese Einstellung kann als Serverparameter konfiguriert werden.
Zwischen den von pg_stat_statements bereitgestellten Abfrageausführungsinformationen und der Auswirkung auf die Serverleistung besteht ein Kompromiss, da jede SQL-Anweisung protokolliert wird. Wenn Sie die pg_stat_statements-Erweiterung nicht aktiv verwenden, empfiehlt es sich, pg_stat_statements.track
auf none
festzulegen. Einige Überwachungsdienste von Drittanbietern können sich auf pg_stat_statements beziehen, um Statistiken zur Abfrageleistung zu liefern. Bestätigen Sie daher, ob dieser Fall auf Sie zutrifft.
TimescaleDB
TimescaleDB ist eine Zeitreihendatenbank, die als eine Erweiterung für PostgreSQL verpackt wird. TimescaleDB bietet zeitlich orientierte Analysefunktionen, Optimierungen, und es skaliert Postgres für Zeitreihenworkloads. Weitere Informationen zu TimescaleDB, einer eingetragenen Marke von Timescale, Inc. Azure Database for PostgreSQL – Flexible Server stellt die Apache 2-Edition von TimescaleDB bereit.
Installieren von TimescaleDB
Um TimescaleDB installieren zu können, müssen Sie nicht nur seine Auflistung zulassen, sondern es wie oben gezeigt in die im Voraus geladenen freigegebenen Bibliotheken des Servers einbeziehen. Damit eine Änderung des shared_preload_libraries
-Parameters von PostgreSQL wirksam wird, ist ein shared_preload_libraries
erforderlich. Sie können Parameter mithilfe des Microsoft Azure-Portals oder der Azure-Befehlszeilenschnittstelle ändern.
Verwenden des Azure-Portals:
Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
Wählen Sie auf der Seitenleiste Serverparameter aus.
Suchen Sie nach dem Parameter
shared_preload_libraries
.Wählen Sie TimescaleDB aus.
Wählen Sie Speichern aus, um Ihre Änderungen beizubehalten. Sobald die Änderung gespeichert wurde, erhalten Sie eine entsprechende Benachrichtigung.
Nach Empfang der Benachrichtigung müssen Sie den Server neu starten, damit diese Änderungen übernommen werden.
Sie können jetzt TimescaleDB für Azure Database for PostgreSQL – Flexible Server aktivieren. Stellen Sie eine Verbindung mit der Datenbank her, und geben Sie den folgenden Befehl ein:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
Tipp
Wenn ein Fehler angezeigt wird, bestätigen Sie, dass Sie nach dem Speichern von „shared_preload_libraries“ Ihren Server neu gestartet haben.
Sie können jetzt eine TimescaleDB-Hypertable ganz neu erstellen oder vorhandene Zeitreihendaten in PostgreSQL migrieren.
Wiederherstellen einer Timescale-Datenbank mit pg_dump und pg_restore
Zum Wiederherstellen einer Zeitskaladatenbank mithilfe von pg_dump und pg_restore müssen Sie zwei Hilfsprozeduren in der Zieldatenbank ausführen: timescaledb_pre_restore()
und timescaledb_post restore()
.
Bereiten Sie zuerst die Zieldatenbank vor:
--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();
Nun können Sie pg_dump für die ursprüngliche Datenbank ausführen und dann pg_restore anwenden. Stellen Sie nach der Wiederherstellung sicher, dass Sie den folgenden Befehl in der wiederhergestellten Datenbank ausführen:
SELECT timescaledb_post_restore();
Weitere Informationen zur Wiederherstellungsmethode mit Timescale-fähiger Datenbank finden Sie in der Dokumentation zu Timescale.
Wiederherstellen einer Timescale-Datenbank mithilfe von timescaledb-backup
Beim Ausführen der oben aufgeführten Prozedur SELECT timescaledb_post_restore()
erhalten Sie beim Aktualisieren des Flags „timescaledb.restoring“ möglicherweise den Fehler „Berechtigungen verweigert“. Dies liegt an der eingeschränkten ALTER DATABASE-Berechtigung in Cloud-PaaS-Datenbankdiensten. In diesem Fall können Sie eine alternative Methode mit dem Tool timescaledb-backup
zum Sichern und Wiederherstellen der Timescale-Datenbank ausführen. Timescaledb-backup ist ein Programm, mit dem eine TimescaleDB-Datenbank einfacher, zuverlässiger und leistungsfähiger gesichert und wiederhergestellt werden kann.
Gehen Sie dazu wie folgt vor:
- Installieren Sie die Tools gemäß dieser Anleitung.
- Erstellen einer Zieldatenbank und -Instanz für flexible Server für Azure Database for PostgreSQL
- Aktivieren Sie die Timescale-Erweiterung wie oben gezeigt.
- Erteilen Sie dem Benutzer, der für ts-restore verwendet wird, die Rolle „azure_pg_admin“.
- Führen Sie ts-restore zum Wiederherstellen der Datenbank aus.
Weitere Informationen zu diesen Hilfsprogrammen finden Sie hier.
Hinweis
Wenn Sie timescale-backup
-Hilfsprogramme für die Wiederherstellung in Azure verwenden, müssen Sie @
durch die %40
-Zeichencodierung ersetzen, weil Datenbankbenutzernamen für Azure Database for PostgreSQL – Einzelserver das Format <user@db-name>
aufweisen müssen.
pg_hint_plan
pg_hint_plan
ermöglicht, PostgreSQL-Ausführungspläne mithilfe sogenannter „Hinweise“ in SQL-Kommentaren zu optimieren, wie z. B.
/*+ SeqScan(a) */
pg_hint_plan
liest Hinweisausdrücke in einem Kommentar in einer mit der SQL-Ziel-Anweisung angegebenen speziellen Form. Die spezielle Form beginnt mit der Zeichenfolge „/*+“ und endet mit „*/“. Hinweisausdrücke bestehen aus dem Hinweisnamen und den folgenden Parametern, die in Klammern eingeschlossen und durch Leerzeichen getrennt sind. Neue Zeilen zur besseren Lesbarkeit können die einzelnen Hinweisausdrücke trennen.
Beispiel:
/*+
HashJoin(a b)
SeqScan(a)
*/
SELECT *
FROM pgbench_branches b
JOIN pgbench_accounts an ON b.bid = a.bid
ORDER BY a.aid;
Das obige Beispiel bewirkt, dass der Planer die Ergebnisse eines seq scan
für Tabelle a für eine Kombination mit Tabelle b als hash join
verwendet.
Um pg_hint_plan installieren zu können, müssen Sie nicht nur seine Auflistung zulassen, sondern es wie oben gezeigt in die im Voraus geladenen freigegebenen Bibliotheken des Servers einbeziehen. Damit eine Änderung des shared_preload_libraries
-Parameters von PostgreSQL wirksam wird, ist ein shared_preload_libraries
erforderlich. Sie können Parameter mithilfe des Microsoft Azure-Portals oder der Azure-Befehlszeilenschnittstelle ändern.
Verwenden des Azure-Portals:
Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
Wählen Sie auf der Seitenleiste Serverparameter aus.
Suchen Sie nach dem Parameter
shared_preload_libraries
.Wählen Sie pg_hint_plan aus.
Wählen Sie Speichern aus, um Ihre Änderungen beizubehalten. Sobald die Änderung gespeichert wurde, erhalten Sie eine entsprechende Benachrichtigung.
Nach Empfang der Benachrichtigung müssen Sie den Server neu starten, damit diese Änderungen übernommen werden.
Sie können jetzt „pg_hint_plan“ für Azure Database for PostgreSQL – Flexible Server aktivieren. Stellen Sie eine Verbindung mit der Datenbank her, und geben Sie den folgenden Befehl ein:
CREATE EXTENSION pg_hint_plan ;
pg_buffercache
Pg_buffercache
kann zum Überprüfen des Inhalts von shared_buffers verwendet werden. Mithilfe dieser Erweiterung können Sie feststellen, ob eine bestimmte Beziehung zwischengespeichert ist oder nicht (in shared_buffers). Diese Erweiterung kann Ihnen bei der Behandlung von Leistungsproblemen helfen (Leistungsprobleme im Zusammenhang mit der Zwischenspeicherung).
Dies ist Teil eines Beitrags, und die Erweiterung kann einfach installiert werden.
CREATE EXTENSION pg_buffercache;
Erweiterungen und Upgrade der Hauptversion
In Azure Database for PostgreSQL – Flexible Server wurde ein Feature für direkte Hauptversionsupgrades eingeführt, das es ermöglicht, mit nur einem Klick ein direktes Upgrade der Instanz von Azure Database for PostgreSQL – Flexible Server durchzuführen. Direkte Hauptversionsupgrades vereinfachen den Upgradeprozess von Azure Database for PostgreSQL – Flexible Server und minimieren Störungen für Benutzer und Anwendungen, die auf den Server zugreifen. Von direkten Hauptversionsupgrades werden spezifische Erweiterungen nicht unterstützt, und es gibt einige Einschränkungen für das Upgraden bestimmter Erweiterungen. Die Erweiterungen Timescaledb, pgaudit, dblink, orafce und postgres_fdw werden für keine der Versionen von Azure Database for PostgreSQL – Flexible Server unterstützt, wenn Sie ein Feature für direkte Hauptversionsupgrades verwenden.