PostgreSQL-Erweiterungen in Azure Database for PostgreSQL Flexible Server
GILT FÜR: Azure Database for PostgreSQL – Flexibler 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.
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 <resource_group> --server-name <server> --subscription <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 postgres-test-server
hinzu:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"flexibleServers_name": {
"defaultValue": "postgres-test-server",
"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, führen Sie die folgenden Schritte aus:
Verwenden des Azure-Portals:
- Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
- Wählen Sie im Ressourcenmenü unter dem Abschnitt Einstellungen die Option Serverparameter aus.
- Suchen Sie nach dem Parameter
shared_preload_libraries
. - Wählen Sie die Bibliotheken aus, die Sie hinzufügen möchten.
:::image type="content" source="./media/concepts-extensions/shared-libraries.png" alt-text="Screenshot showing Azure Database for PostgreSQL -setting shared preload libraries parameter setting for extensions installation." lightbox="./media/concepts-extensions/shared-libraries.png":::
```Using [Azure CLI](/cli/azure/):
You can set `shared_preload_libraries` via CLI [parameter set](/cli/azure/postgres/flexible-server/parameter?view=azure-cli-latest&preserve-view=true) command.
```azurecli
az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --subscription <subscription_id> --name shared_preload_libraries --value <extension_name>,<extension_name>
Erstellen der Erweiterung
Nachdem Sie Erweiterungen in die Positivliste aufgenommen und geladen haben, müssen Sie diese in jeder Datenbank installieren, in der Sie sie verwenden möchten.
- Ein Benutzer muss Mitglied von
azure_pg_admin
Rolle sein, um eine Erweiterung zu erstellen. Ein Mitglied der Rolleazure_pg_admin
kann anderen Benutzern Berechtigungen zum Erstellen von Erweiterungen gewähren. - 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, wie in der folgenden Tabelle aufgeführt. 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 17 | 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.5.0 | 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.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
Alter (Vorschau) | Stellt Graphdatenbank-Funktionen bereit | N/V | 1.5.0 ✔️ | 1.5.0 ✔️ | 1.5.0 ✔️ | 1.5.0 ✔️ | – | – |
amcheck | Funktionen zum Überprüfen der Beziehungsintegrität | 1.4 | 1.3 | 1.3 | 1.3 | 1.2 | 1.2 | 1.1 |
anon (Vorschau) | Tools fÜr Daten-Anonymisierung | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ |
azure_ai | Integration von Azure AI und ML Services für PostgreSQL | N/V | 1.1.0 | 1.1.0 | 1.1.0 | 1.1.0 | 1.1.0 | N/V |
azure_storage | Azure-Integration für PostgreSQL | N/V | 1.5 ✔️ | 1.5 ✔️ | 1.5 ✔️ | 1.5 ✔️ | 1.5 ✔️ | N/V |
bloom | Bloom-Zugriffsmethode: Index, der auf einer Signaturdatei basiert | 1.0 | 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 | 1.3 |
btree_gist | Unterstützung für die Indizierung häufiger Datentypen in GIST | 1.7 | 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.6 | 1.5 |
cube | Datentyp für mehrdimensionale Cubes | 1.5 | 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 | 1.2 |
dict_int | Textsuche-Wörterbuchvorlage für Integerwerte | 1.0 | 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 | 1.0 |
earthdistance | Berechnung von Großkreisentfernungen auf der Erdoberfläche | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
fuzzystrmatch | Ermittlung von Ähnlichkeiten und der Entfernung zwischen Zeichenfolgen | 1.2 | 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.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 | 1.4.0 |
intagg | Ganzzahlaggregator und Enumerator (veraltet) | 1.1 | 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.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 | 1.2 |
lo | Wartung großer Objekte | 1.1 | 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.5 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 |
ltree | Datentyp für hierarchische baumähnliche Strukturen | 1.3 | 1.2 | 1.2 | 1.2 | 1.2 | 1.1 | 1.1 |
oracle_fdw | Wrapper für programmfremde Daten für Oracle-Datenbanken | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | N/V |
orafce | Funktionen und Bediener zum Emulieren einer Teilmenge von Funktionen und Paketen aus der Oracle RDBMS | 4,9 | 4.4 | 3,24 | 3.18 | 3.18 | 3.18 | 3,7 |
pageinspect | Überprüft den Inhalt von Datenbankseiten im Detail | 1.12 | 1.12 | 1.11 | 1.9 | 1.8 | 1.7 | 1.7 |
pgaudit | Überwachungsfunktionen | 16.0 ✔️ | 16.0 ✔️ | 1.7 ✔️ | 1.6.2 ✔️ | 1.5 ✔️ | 1.4.3 ✔️ | 1.3.2 ✔️ |
pg_buffercache | Untersuchung des freigegebenen Puffercaches | 1.5 | 1.4 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
pg_cron | Auftragsplaner für PostgreSQL | 1.6 ✔️ | 1.6 ✔️ | 1.6 ✔️ | 1.6 ✔️ | 1.6 ✔️ | 1.6 ✔️ | 1.4-1 ✔️ |
pgcrypto | Kryptografische Funktionen | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
pg_freespacemap | Untersucht Free Space Map (FSM) | 1.2 | 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.7.0 ✔️ | 1.6.0 ✔️ | 1.5 ✔️ | 1.4 ✔️ | 1.3.7 ✔️ | 1.3.7 ✔️ | 1.3.7 ✔️ |
pglogisch | Logische Replikation von PostgreSQL | 2.4.5 ✔️ | 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 | 5.0.1 ✔️ | 5.0.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 ✔️ | 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 | 1.4.7 |
pgrouting | PgRouting-Erweiterung | – | – | 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 | 1.2 |
pg_squeeze | Ein Tool zum Entfernen nicht verwendeter Leerzeichen aus einer Beziehung. | 1.7 ✔️ | 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.11 ✔️ | 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 | 1.5 |
pg_trgm | Messung von Textähnlichkeit und Indexsuche basierend auf Trigrammen | 1.6 | 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 | 1.2 |
plpgsql | PL/pgSQL: Prozedurale Sprache | 1.0 | 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.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.5.0 | 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.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_sfcgal | PostGIS SFCGAL-Funktionen | 3.5.0 | 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.5.0 | 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.5.0 | 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.1 | 1.0 | 1.0 | 1.0 |
postgres_protobuf | Protokollpuffer für PostgreSQL | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | N/V |
semver | Datentyp der semantischen Version | 0.32.1 | 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 | 3.3 |
sslinfo | Informationen zu SSL-Zertifikaten | 1.2 | 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 | 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 | 2.0.3 |
timescaledb | Ermöglichung von skalierbaren Einfügungen und komplexen Abfragen für Zeitreihendaten | N/V | 2.13.0 ✔️ | 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 | 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 | 1.0 |
unaccent | Wörterbuch für Textsuche mit Entfernung von Akzenten | 1.1 | 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 | 1.1 |
vector | Vektordatentyp und Ivfflat- und hnsw-Zugriffsmethoden | 0.7.0 | 0.7.0 | 0.7.0 | 0.7.0 | 0.7.0 | 0.7.0 | 0.5.1 |
Upgraden von PostgreSQL-Erweiterungen
Direkte Upgrades von Datenbankerweiterungen sind über einen einfachen Befehl zulässig. Mit diesem Feature können Kunden ihre Drittanbietererweiterungen automatisch auf die neuesten Versionen aktualisieren und so die aktuellen und sicheren Systeme aufrechterhalten, ohne manuellen Aufwand.
Aktualisieren von Erweiterungen
Verwenden Sie den folgenden SQL-Befehl, um eine installierte Erweiterung auf die neueste verfügbare Version zu aktualisieren, die von Azure unterstützt wird:
ALTER EXTENSION <extension_name> UPDATE;
Mit diesem Befehl wird die Verwaltung von Datenbankerweiterungen vereinfacht, indem Benutzer ein manuelles Upgrade auf die neueste Version durchführen können, die von Azure genehmigt wurde, wodurch Kompatibilität und Sicherheit verbessert werden.
Begrenzungen
Während das Aktualisieren von Erweiterungen unkompliziert ist, gibt es bestimmte Einschränkungen:
- Auswahl einer spezifischen Version: Der Befehl unterstützt keine Aktualisierung auf Zwischenversionen einer Erweiterung. Es wird immer auf die neueste verfügbare Version aktualisiert.
- Herabstufen: Unterstützt das Herabstufen einer Erweiterung auf eine frühere Version nicht. Wenn eine Herabstufung erforderlich ist, ist möglicherweise Support erforderlich. Die Herabstufung hängt von der Verfügbarkeit einer vorherigen Version ab.
Installierte Erweiterungen
Verwenden Sie den folgenden SQL-Befehl, um die derzeit in Ihrer Datenbank installierten Erweiterungen aufzulisten:
SELECT * FROM pg_extension;
Verfügbare Erweiterungen und deren Versionen
Fragen Sie die Systemkatalogsicht pg_available_extensions
ab, um zu überprüfen, welche Versionen einer Erweiterung für Ihre aktuelle Datenbankinstallation verfügbar sind. Um beispielsweise die für die azure_ai
-Erweiterung verfügbare Version zu ermitteln, führen Sie Folgendes aus:
SELECT * FROM pg_available_extensions WHERE name = 'azure_ai';
Diese Befehle bieten notwendige Einblicke in die Erweiterungskonfigurationen Ihrer Datenbank und sorgen dafür, dass Ihre Systeme effizient und sicher bleiben. Durch die Aktivierung einfacher Updates für die neuesten Erweiterungsversionen unterstützt Azure Database for PostgreSQL weiterhin die robuste, sichere und effiziente Verwaltung Ihrer Datenbankanwendungen.
Überlegungen zu Azure Database for PostgreSQL – Flexible Server
Nachfolgend finden Sie eine Liste der unterstützten Erweiterungen, die bestimmte Überlegungen erfordern, wenn sie im Dienst für Azure Database for PostgreSQL – Flexible Server verwendet werden. Die Liste wird alphabetisch sortiert.
dblink
dblink ermöglicht Ihnen das Herstellen einer Verbindung von einer Instanz von Azure Database for PostgreSQL – Flexible Server mit einer 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 Erweiterung 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_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 (in shared_buffers
). Diese Erweiterung kann Ihnen bei der Behandlung von Leistungsproblemen helfen (Leistungsprobleme im Zusammenhang mit der Zwischenspeicherung).
Diese Erweiterung ist in die Core-Installation von PostgreSQL integriert und lässt sich einfach installieren.
CREATE EXTENSION pg_buffercache;
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. Auf diese Weise 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 „vacuum“ 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 shared_preload_libraries
ist in jeder Instanz des flexiblen Servers von Azure Database for PostgreSQL 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 des flexiblen Servers von Azure Database for PostgreSQL ohne Beeinträchtigung der Sicherheit zu planen. Aus Sicherheitsgründen müssen Sie jedoch weiterhin die Erweiterung pg_cron
in die Positivliste aufnehmen und sie mithilfe des Befehls CREATE EXTENSION installieren.
Ab pg_cron
Version 1.4 können Sie die Funktionen cron.schedule_in_database
und cron.alter_job
verwenden, um Ihren Auftrag in einer bestimmten Datenbank zu planen und 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
Die Funktion cron_schedule_in_database
ermöglicht den Benutzernamen als optionalen Parameter. 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
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 11 bis 16 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.
Verwenden des Azure-Portals:
- Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
- Wählen Sie im Ressourcenmenü unter dem Abschnitt Einstellungen die Option Serverparameter aus.
- Suchen Sie nach dem Parameter
shared_preload_libraries
, und legen Sie den Wert aufpg_failover_slots
fest. - 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 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_hint_plan
pg_hint_plan
ermöglicht, PostgreSQL-Ausführungspläne mithilfe sogenannter „Hinweise“ in SQL-Kommentaren zu optimieren, wie:
/*+ 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 vorherige 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 zusätzlich zur Aufnahme in die Positivliste installieren zu können, wie unter Wie werden PostgreSQL-Erweiterungen verwendet? gezeigt, müssen Sie es in die freigegebenen, im Voraus geladenen 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 im Ressourcenmenü unter dem Abschnitt Einstellungen die Option Serverparameter aus.
- Suchen Sie nach dem Parameter
shared_preload_libraries
, und legen Sie den Wert aufpg_hint_plan
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. 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_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_repack
Eine typische Frage, die Benutzer stellen, wenn sie zum ersten Mal versuchen, diese Erweiterung zu verwenden, lautet: Ist pg_repack eine Erweiterung oder eine clientseitige ausführbare Datei wie psql oder pg_dump?
Die Antwort darauf lautet, dass es tatsächlich beides ist. pg_repack/lib enthält den Code für die Erweiterung, einschließlich der von ihr erstellten Schema- und SQL-Artefakte, und die C-Bibliothek, die den Code mehrerer dieser Funktionen implementiert. Andererseits behält pg_repack/bin den Code für die Clientanwendung bei, der weiß, wie mit den von der Erweiterung erstellten Programmierartefakten interagiert werden kann. Diese Clientanwendung zielt darauf ab, die Komplexität der Interaktion mit den verschiedenen Schnittstellen zu erleichtern, die von der serverseitigen Erweiterung angezeigt werden, indem dem Benutzer einige Befehlszeilenoptionen angeboten werden, die leichter zu verstehen sind. Die Clientanwendung ohne die in der Datenbank erstellte Erweiterung, auf die verwiesen wird, ist nutzlos. Die serverseitige Erweiterung selbst wäre voll funktionsfähig, erfordert jedoch, dass der Benutzer ein kompliziertes Interaktionsmuster versteht, das darin besteht, Abfragen auszuführen, um Daten abzurufen, die als Eingabe für Funktionen verwendet werden, die von der Erweiterung implementiert werden.
Berechtigung verweigert für Repack-Schema
Aufgrund der Art und Weise, in der wir dem von dieser Erweiterung generierten Repack-Schema Berechtigungen erteilen, können ab jetzt nur pg_repack-Funktionen aus dem Kontext von azure_pg_admin
ausgeführt werden.
Möglicherweise stellen Sie fest, dass der Besitzer einer Tabelle, der nicht azure_pg_admin
ist, beim Versuch pg_repack auszuführen, schlussendlich eine Fehlermeldung wie die folgende erhält:
NOTICE: Setting up workers.conns
ERROR: pg_repack failed with error: ERROR: permission denied for schema repack
LINE 1: select repack.version(), repack.version_sql()
Um diesen Fehler zu vermeiden, stellen Sie sicher, dass Sie pg_repack aus dem Kontext von azure_pg_admin
ausführen.
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“ wird in shared_preload_libraries
auf jedem flexiblen Server von Azure Database for PostgreSQL vorab geladen, um für Sie eine Möglichkeit zur Nachverfolgung von Ausführungsstatistiken von SQL-Anweisungen zu schaffen.
Aus Sicherheitsgründen müssen Sie jedoch weiterhin die Erweiterung „pg_stat_statements“ in die Positivliste 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, sollten Sie pg_stat_statements.track
auf none
festlegen. 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.
postgres_fdw
postgres_fdw ermöglicht Ihnen das Herstellen einer Verbindung von einer Instanz von Azure Database for PostgreSQL – Flexible Server mit einer 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 Erweiterung 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.
pgstattuple
Bei Verwendung der Erweiterung „pgstattuple“ zum Abrufen von Tupelstatistiken von Objekten, die in den Postgres-Versionen 11 bis 13 im Schema pg_toast
gespeichert sind, erhalten Sie einen Fehler vom Typ „Berechtigung verweigert für pg_toast-Schema“.
Berechtigung verweigert für pg_toast-Schema
Kunden, die die PostgreSQL-Versionen 11 bis 13 für Azure-Datenbank für flexible Server verwenden, können die Erweiterung pgstattuple
nicht für Objekte innerhalb des pg_toast
-Schemas nutzen.
In PostgreSQL 16 und 17 wird die Rolle pg_read_all_data
automatisch azure_pg_admin
gewährt, sodass pgstattuple
ordnungsgemäß funktioniert. In PostgreSQL 14 und 15 können Kunden die Rolle pg_read_all_data
manuell azure_pg_admin
gewähren, um dasselbe Ergebnis zu erzielen. In PostgreSQL 11 bis 13 existiert die Rolle pg_read_all_data
jedoch nicht.
Kunden können die erforderlichen Berechtigungen nicht direkt erteilen. Wenn Sie pgstattuple
ausführen müssen, um auf Objekte im pg_toast
-Schema zuzugreifen, fahren Sie mit dem Erstellen einer Azure-Supportanfrage fort.
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 im Ressourcenmenü unter dem Abschnitt Einstellungen die Option Serverparameter aus.
- Suchen Sie nach dem Parameter
shared_preload_libraries
, und legen Sie den Wert aufTimescaleDB
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. 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 want to 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.
- Zuweisen der Rolle
azure_pg_admin
für Benutzerkonten, die von ts-restore verwendet werden - Führen Sie ts-restore zum Wiederherstellen der Datenbank aus.
Weitere Informationen zu diesen Hilfsprogrammen finden Sie hier.
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 anon, Apache AGE, dblink, orafce, pgaudit, postgres_fdw, und Timescaledb werden für keine der Versionen von Azure Database for PostgreSQL – Flexibler Server unterstützt, wenn Sie ein Feature für direkte Hauptversionsupgrades verwenden.