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:

  1. Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
    1. Wählen Sie im Ressourcenmenü unter dem Abschnitt Einstellungen die Option Serverparameter aus.
    2. Suchen Sie nach dem Parameter azure.extensions.
    3. Wählen Sie die Erweiterungen aus, die Sie in die Positivliste aufnehmen möchten. Screenshot: Erweiterungen von Azure Database for PostgreSQL – Flexibler Server in die Positivliste zur Installation aufnehmen

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:

  1. Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
    1. Wählen Sie im Ressourcenmenü unter dem Abschnitt Einstellungen die Option Serverparameter aus.
    2. Suchen Sie nach dem Parameter shared_preload_libraries.
    3. 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.

  1. Ein Benutzer muss Mitglied von azure_pg_admin Rolle sein, um eine Erweiterung zu erstellen. Ein Mitglied der Rolle azure_pg_admin kann anderen Benutzern Berechtigungen zum Erstellen von Erweiterungen gewähren.
  2. 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 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:

  1. Fügen Sie pg_failover_slots zu den freigegebenen Vorabladebibliotheken des Servers hinzu, indem Sie den Parameter shared_preload_libraries aktualisieren.
  2. Ändern Sie den Serverparameter hot_standby_feedback in on.

Damit Änderungen des Parameters shared_preload_libraries wirksam werden, ist ein Serverneustart erforderlich.

Verwenden des Azure-Portals:

  1. Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
  2. Wählen Sie im Ressourcenmenü unter dem Abschnitt Einstellungen die Option Serverparameter aus.
  3. Suchen Sie nach dem Parameter shared_preload_libraries, und legen Sie den Wert auf pg_failover_slots fest.
  4. Suchen Sie nach dem Parameter hot_standby_feedback, und legen Sie den Wert auf on fest.
  5. 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:

  1. Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
  2. Wählen Sie im Ressourcenmenü unter dem Abschnitt Einstellungen die Option Serverparameter aus.
  3. Suchen Sie nach dem Parameter shared_preload_libraries, und legen Sie den Wert auf pg_hint_plan fest.
  4. 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:

  1. Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
  2. Wählen Sie im Ressourcenmenü unter dem Abschnitt Einstellungen die Option Serverparameter aus.
  3. Suchen Sie nach dem Parameter shared_preload_libraries, und legen Sie den Wert auf TimescaleDB fest.
  4. 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:

  1. Installieren Sie die Tools gemäß dieser Anleitung.
    1. Erstellen einer Zieldatenbank und -Instanz für flexible Server für Azure Database for PostgreSQL
    2. Aktivieren Sie die Timescale-Erweiterung wie oben gezeigt.
    3. Zuweisen der Rolle azure_pg_admin für Benutzerkonten, die von ts-restore verwendet werden
    4. 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.