Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden besondere Aspekte beschrieben, die Sie beachten sollten, wenn Sie bestimmte Erweiterungen oder Module von Azure Database for PostgreSQL – Flexibler Server verwenden.
Allgemeine Überlegungen bei Erweiterungen
Um eine Erweiterung in Azure Database for PostgreSQL – Flexibler Server zu verwenden, müssen Sie Folgendes tun:
- Lassen Sie die Erweiterung zu. Wenn die Erweiterung nicht zulässig ist, tritt bei jedem Versuch,
CREATE EXTENSION
,ALTER EXTENSION
,DROP EXTENSION
oderCOMMENT ON EXTENSION
auszuführen, ein Fehler auf, der darauf hinweist, dass die Erweiterung nicht zulässig ist. - Wenn die Erweiterung eine freigegebene Binärbibliothek bereitstellt, die das Zuweisen und Zugreifen auf gemeinsam genutzten Arbeitsspeicher erfordert und beim Starten des Servers geladen werden muss, sollten Sie auch die Anweisungen unter Laden von Bibliotheken befolgen.
- Erstellen Sie die Erweiterung in den Datenbanken, in denen Sie die mit dieser Erweiterung verteilten SQL-Objekte bereitstellen möchten.
- Entfernen Sie die Erweiterung. Wenn Sie die Erweiterung aus der Datenbank entfernen möchten, in der Sie den Befehl ausführen, werden alle SQL-Objekte, die von dieser Erweiterung verteilt werden, entfernt.
- Aktualisieren Sie die Erweiterungen, um alle SQL-Artefakte, die von einer bereits installierten Erweiterung bereitgestellt wurden, auf die neueste Version zu aktualisieren.
- Zeigen Sie die installierten Erweiterungen und deren entsprechende Versionen an.
Wenn beim Ausführen der Befehle CREATE EXTENSION
, ALTER EXTENSION
, DROP EXTENSION
oder COMMENT ON EXTENSION
auf Ihrem Azure Database for PostgreSQL – Flexibler Server Fehler angezeigt werden, lesen Sie eine Liste der möglichen Fehler und was die Ursache für jeden dieser Fehler sein könnte.
Allgemeine Überlegungen bei Modulen
Wenn Sie ein Modul in Azure Database for PostgreSQL – Flexibler Server verwenden möchten, müssen Sie dieses nur dem Serverparameter shared_preload_libraries
hinzufügen, wie unter Laden von Bibliotheken beschrieben.
Module müssen nicht auf die Positivliste gesetzt werden. Dies ist eine exklusive Anforderung für Erweiterungen.
Erweiterungen mit bestimmten Überlegungen
Nachfolgend finden Sie eine Liste der unterstützten Erweiterungen, die bestimmte Erwägungen erfordern, wenn sie in Azure Database for PostgreSQL – Flexibler Server verwendet werden:
AGE
dblink
pg_buffercache
pg_cron
pg_hint_plan
pg_prewarm
pg_repack
pg_stat_statements
postgres_fdw
pgstattuple
Alter
Die Apache AGE-Erweiterung ist eine Graph-Erweiterung für PostgreSQL, die von Azure Database für PostgreSQL flexiblen Server unterstützt wird. Es bietet Graph-Datenbankfunktionen, offene Cypher-Abfrageunterstützung und die Möglichkeit, komplexe Abfragen zu graphischen Daten auszuführen, die in PostgreSQL gespeichert sind. "Apache AGE" ist ein Open-Source-Projekt, das unter der Apache License 2.0 veröffentlicht wurde.
AGE installieren
Um AGE zu verwenden, müssen Sie sicherstellen, dass Sie die Erweiterung auf die Positivliste gesetzt haben, dass ihre Bibliothek geladen wird und dass die Erweiterung in der Datenbank installiert ist, in der Sie ihre Funktionalität verwenden möchten.
dblink
Die dblink
-Erweiterung 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.
Wenn Sie diese Erweiterung verwenden möchten, empfehlen wir die Bereitstellung Ihrer Server mit Virtual Network-Integration. 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
Die pg_buffercache
-Erweiterung 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
Die pg_cron
-Erweiterung 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.
Die pg_cron
-Erweiterung 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.
Stellen Sie sicher, dass der Wert, auf den shared_preload_libraries
festgelegt ist, pg_cron
enthält. Diese Erweiterung bietet keine Unterstützung für das Laden der Bibliothek infolge der Ausführung von CREATE EXTENSION. Jeder Versuch, CREATE EXTENSION auszuführen, wenn die Erweiterung nicht zu shared_preload_libraries
hinzugefügt oder der Server nach dem Hinzufügen nicht neu gestartet wurde, führt zu einem Fehler, dessen Fehlermeldung pg_cron can only be loaded via shared_preload_libraries
und dessen Hinweis Add pg_cron to the shared_preload_libraries configuration variable in postgresql.conf
lautet.
Um pg_cron
zu verwenden, müssen Sie sicherstellen, dass Sie die Bibliothek beim Serverstart laden, dass die Erweiterung auf die Positivliste gesetzt wurde und dass sie in jeder Datenbank installiert ist, in der Sie mithilfe der von der Erweiterung erstellten SQL-Artefakte mit der Erweiterungsfunktionalität interagieren möchten.
Beispiele
Um alte Daten am Samstag um 3:30 Uhr (GMT) zu löschen.
SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);
Um das Vakuum täglich um 10:00 Uhr (GMT) in der Standarddatenbank
postgres
auszuführen.SELECT cron.schedule('0 10 * * *', 'VACUUM');
So heben Sie den Zeitplan für alle Tasks aus
pg_cron
aufSELECT cron.unschedule(jobid) FROM cron.job;
Anzeigen aller derzeit mit
pg_cron
geplanten AufträgeSELECT * FROM cron.job;
Um das Vakuum täglich um 10:00 Uhr (GMT) in der Datenbank
test cron
unter demazure_pg_admin
-Rollenkonto auszuführen.SELECT cron.schedule_in_database('VACUUM',' 0 10 * * * ', 'VACUUM', 'testcron',null,TRUE);
Weitere Beispiele
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.
Die cron_schedule_in_database
-Funktion 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 löschen Sie alte Daten am Samstag um 3: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');
So aktualisieren oder ändern Sie den Datenbanknamen für den vorhandenen Zeitplan
SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');
pg_hint_plan
Die pg_hint_plan
-Erweiterung ermöglicht, PostgreSQL-Ausführungspläne mithilfe sogenannter „Hinweise“ in SQL-Kommentaren zu optimieren, wie:
/*+ SeqScan(a) */
Die pg_hint_plan
-Erweiterung liest Hinweisausdrücke in einem Kommentar in der mit der SQL-Ziel-Anweisung angegebenen speziellen Form. Das jeweilige Formular beginnt mit der Zeichenfolge „/*+“ und endet mit „*/“. Hinweisausdrücke bestehen aus den 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 einer seqscan
in Tabelle a
verwendet, um sie mit Tabelle b
als hashjoin
zu kombinieren.
Um die Erweiterung pg_hint_plan
zu verwenden, müssen Sie sicherstellen, dass Sie die Erweiterung auf die Positivliste gesetzt haben, dass ihre Bibliothek geladen wird und dass die Erweiterung in der Datenbank installiert ist, in der Sie ihre Funktionalität verwenden möchten.
pg_prewarm
Die pg_prewarm
-Erweiterung lädt relationale Daten in den Zwischenspeicher. Durch das Vorwärmen des Zwischenspeichers weisen Ihre Abfragen bei der ersten Ausführung nach einem Neustart bessere Reaktionszeiten auf. Die AutoPrewarm-Funktionalität für den PostgreSQL – Flexible Server ist derzeit nicht in der Azure Database verfügbar.
pg_repack
Erstbenutzende der Erweiterung pg_repack
stellen in der Regel folgende Frage: Ist pg_repack
eine Erweiterung oder eine clientseitige ausführbare Datei wie psql
oder pg_dump
?
pg_repack ist in der Tat beides. 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 enthält pg_repack/bin den Code für die Clientanwendung, 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. Sie bietet dem Benutzer einige Befehlszeilenoptionen, 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. Dieses Muster besteht darin, Abfragen auszuführen, um Daten abzurufen, die als Eingabe für Funktionen verwendet werden, die von der Erweiterung implementiert werden, usw.
Berechtigung verweigert für Repack-Schema
Da Berechtigungen derzeit dem Repack-Schema erteilt werden, das von dieser Erweiterung generiert wurde, wird die Ausführung von pg_repack
-Funktionalität nur im Kontext von azure_pg_admin
unterstützt.
Möglicherweise stellen Sie fest, dass der Besitzer einer Tabelle, der nicht azure_pg_admin
ist, beim Versuch pg_repack
auszuführen, 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, führen Sie pg_repack aus dem Kontext von azure_pg_admin
aus.
pg_stat_statements
Mit der Erweiterung „pg_stat_statements“ können Sie alle Abfragen anzeigen, die in Ihrer Datenbank ausgeführt werden. Diese Information ist nützlich, um die Leistung ihrer Abfragearbeitsauslastung in einem Produktionssystem zu verstehen.
Die Erweiterung „pg_stat_statements“ wird in shared_preload_libraries
auf jedem flexiblen Server von Azure Database for PostgreSQL vorab geladen, um 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 die Erweiterung nachverfolgt, ist standardmäßig auf top
festgelegt, was bedeutet, dass alle Anweisungen, die direkt von Clients ausgegeben werden, nachverfolgt werden. Die beiden anderen Nachverfolgungsebenen sind none
und all
. Diese Einstellung kann als Serverparameter konfiguriert werden.
Zwischen den von der pg_stat_statements
-Erweiterung bereitgestellten Abfrageausführungsinformationen und der 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
Die postgres_fdw
-Erweiterung 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.
Wenn Sie diese Erweiterung verwenden möchten, empfehlen wir die Bereitstellung Ihrer Server mit Virtual Network-Integration. 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 auf Azure-Datenbank für flexiblen Server verwenden| Die pgstattuple
Erweiterung kann nicht für Objekte innerhalb des pg_toast
Schemas verwendet werden.
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
Die timescaleDB
-Erweiterung ist eine Zeitreihendatenbank, die als eine Erweiterung für PostgreSQL verpackt wird. Sie bietet zeitlich orientierte Analysefunktionen und Optimierungen, und 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
zu verwenden, müssen Sie sicherstellen, dass Sie die Erweiterung auf die Positivliste gesetzt haben, dass ihre Bibliothek geladen wird und dass die Erweiterung in der Datenbank installiert ist, in der Sie ihre Funktionalität verwenden möchten.
Sie können jetzt eine TimescaleDB-Hypertable ganz neu erstellen oder vorhandene Zeitreihendaten in PostgreSQL migrieren.
Weitere Informationen zum Wiederherstellen einer Timescale-Datenbank mit pg_dump
und pg_restore
finden Sie unter Dokumentation zu Timescale.
Wiederherstellen einer Timescale-Datenbank mithilfe von timescaledb-backup
Beim Ausführen der SELECT timescaledb_post_restore()
-Prozedur erhalten Sie möglicherweise Berechtigungen, die beim Aktualisieren des Flags timescaledb.restoring verweigert werden. Der Grund, warum Sie diesen Fehler erhalten, 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.
Führen Sie dazu die folgenden Schritte aus:
Installieren Sie die Tools gemäß dieser Anleitung.
Erstellen Sie eine Zieldatenbank und -Instanz für Azure Database for PostgreSQL – Flexibler Server.
Aktivieren Sie die Zeitskalenerweiterung.
Gewähren Sie dem Benutzer, der von
azure_pg_admin
verwendet wird die -Rolle.Führen Sie ts-restore zum Wiederherstellen der Datenbank aus.
Weitere Informationen zu diesen Hilfsprogrammen finden Sie hier.
Erweiterungen und Upgrade der Hauptversion
Azure Database for PostgreSQL – Flexibler Server bietet ein Feature für direkte Upgrades der Hauptversion, mit dem die benutzende Person nur eine einfache Interaktion ausführen muss, um 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 alle Azure Database for PostgreSQL – Flexible Serverversionen nicht unterstützt, wenn sie Feature für direkte Hauptversionsupgrades verwenden.
Module mit bestimmten Überlegungen
Nachfolgend finden Sie eine Liste der unterstützten Module, die bestimmte Überlegungen erfordern, wenn sie in Azure Database for PostgreSQL – Flexibler Server verwendet werden:
pg_failover_slots
pg_failover_slots
Das pg_failover_slots
-Modul verbessert Azure Database for PostgreSQL – Flexibler 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.
Weitere Informationen und Anweisungen zur Verwendung des pg_failover_slots
Moduls finden Sie auf der GitHub-Seite.
Um das pg_failover_slots
Modul zu verwenden, stellen Sie sicher, dass die Bibliothek beim Starten des Servers geladen wurde .