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:

  1. Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
  2. Wählen Sie auf der Seitenleiste Serverparameter aus.
  3. Suchen Sie nach dem Parameter azure.extensions.
  4. Wählen Sie 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 <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:

  1. Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
  2. Wählen Sie auf der Seitenleiste Serverparameter aus.
  3. Suchen Sie nach dem Parameter shared_preload_libraries.
  4. Wählen Sie Erweiterungen aus, die Sie hinzufügen möchten. Screenshot der Azure Database for PostgreSQL-Einstellung des Parameters „shared_preload_libraries“ für die Installation von Erweiterungen

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 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:

  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.

Führen Sie im Azure-Portal die folgenden Schritte aus:

  1. Melden Sie sich beim Azure-Portal an, und wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.
  2. Wählen Sie im Menü auf der linken Seite Serverparameter aus.
  3. Suchen Sie den Parameter shared_preload_libraries in der Liste, und bearbeiten Sie dessen Wert so, dass er pg_failover_slots einschließt.
  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 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:

  1. Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.

  2. Wählen Sie auf der Seitenleiste Serverparameter aus.

  3. Suchen Sie nach dem Parameter shared_preload_libraries.

  4. Wählen Sie TimescaleDB aus.

  5. Wählen Sie Speichern aus, um Ihre Änderungen beizubehalten. Sobald die Änderung gespeichert wurde, erhalten Sie eine entsprechende Benachrichtigung.

  6. 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:

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

  1. Wählen Sie Ihre Instanz von Azure Database for PostgreSQL – Flexible Server aus.

  2. Wählen Sie auf der Seitenleiste Serverparameter aus.

  3. Suchen Sie nach dem Parameter shared_preload_libraries.

  4. Wählen Sie pg_hint_plan aus.

  5. Wählen Sie Speichern aus, um Ihre Änderungen beizubehalten. Sobald die Änderung gespeichert wurde, erhalten Sie eine entsprechende Benachrichtigung.

  6. 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.