PostgreSQL-Erweiterungen verwalten
In PostgreSQL sind Erweiterungen Module, die zusätzliche Funktionen, Operatoren oder Typen bereitstellen. Viele Erweiterungen sind in IBM Cloud® Databases for PostgreSQL verfügbar. Um sie zu nutzen, wählen Sie Das Administratorpasswort festlegen für Ihren Dienst und dann Verwenden Sie psql zur Verbindung.
Installierte Erweiterungen auflisten
Sie können mit dem Befehl \dx eine Liste aller Erweiterungen abrufen, die in einer Datenbank installiert sind.
Zum Beispiel zeigt die Ausgabe für \dx bei Ausführung für die Databases for PostgreSQL-Standarddatenbank die einzige installierte Erweiterung an.
ibmclouddb=> \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(1 row)
Erweiterungen installieren
Um eine Erweiterung in einer Datenbank zu installieren, verwenden Sie CREATE EXTENSION. Um beispielsweise auf pg_stat_statements der Datenbank ibmclouddb zu installieren, verwenden Sie den folgenden Befehl:
ibmclouddb=> CREATE EXTENSION pg_stat_statements;
CREATE EXTENSION
Erweiterungen werden im schreibgeschützten ibm_extension-Schema installiert. Das Schema ist Teil von search_path, sodass Erweiterungsobjekte nicht mit einem Schema qualifiziert werden müssen. Die Änderung des Schemas
public in das Schema ibm_extension ist erforderlich, um die Sicherheit und Integrität Ihrer Daten zu schützen.
Wenn Sie den Befehl \dx nach der Installation einer Erweiterung ausführen, wird er in der Tabelle angezeigt.
ibmclouddb=> \dx
List of installed extensions
Name | Version | Schema | Description
--------------------+---------+---------------+------------------------------------------------------------------------
pg_stat_statements | 1.10 | ibm_extension | track planning and execution statistics of all SQL statements executed
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(2 rows)
Datenbankerweiterungen in PostgreSQL werden pro Datenbank verwaltet. Wenn Sie mehrere Datenbanken haben, auf denen Sie eine Erweiterung installieren müssen, führen Sie den Befehl CREATE auf jeder Datenbank aus.
Erweiterungen aktualisieren
Um die Erweiterungen in der aktuellen Datenbank aufzulisten, für die eine neuere Version verfügbar ist, führen Sie die folgende Abfrage aus:
SELECT e.extname, e.extversion AS installed_version, a.default_version AS available_version
FROM pg_catalog.pg_extension AS e
JOIN pg_catalog.pg_available_extensions AS a ON a.name = e.extname
WHERE e.extversion <> a.default_version;
Um eine Erweiterung zu aktualisieren, führen Sie den Befehl ALTER EXTENSION in jeder Datenbank aus, in der die Erweiterung installiert ist:
ALTER EXTENSION <extension_name> UPDATE;
Für die folgenden Erweiterungen ist ein anderes Vorgehen erforderlich:
- Um die Erweiterung
pg_repackzu aktualisieren, führen Sie aus undDROP EXTENSION pg_repack;anschließendCREATE EXTENSION pg_repack;in jeder Datenbank, die diese Erweiterung verwendet. - Der PostgreSQL-Anonymisierer (
anon) wird nicht unterstütztALTER EXTENSION ... UPDATE. Informationen zum Upgrade finden Sie unter Upgrade des PostgreSQL-Anonymisierers. - Durch ein Update von 3.x
pgRoutingwird auf Version 4.0 umgestellt, wodurch mehrere Funktionen entfernt werden. Bevor Sie das Update durchführen, lesen Sie bittepgRouting.
Erweiterungsspezifische Hinweise
pg_repack
-
Wenn Sie den Befehl
pg_repackausführen, übergeben Sie das Flag -k, um die Überprüfung der Superuser-Berechtigung zu umgehen. Sehen Sie sich das folgende Beispiel an:pg_repack -k [OPTION]... [DBNAME] -
Jeder Benutzer kann
pg_repackausführen, aber mit dem Befehl kann er nur eine Tabelle austauschen, für die er die Berechtigungen hat. -
pg_repackmuss eine exklusive Sperre für Objekte nehmen, die am Ende der Reorganisation reorganisiert werden. Wenn es diese Sperre nach einem bestimmten Zeitraum nicht abrufen kann, bricht es alle im Konflikt stehenden Abfragen ab. Wenn dieser Fall eintritt, schlägt die Reorganisation fehl. Standardmäßig kann nur der Admin-Benutzer konfliktbehaftete Abfragen abbrechen. Damit andere Datenbankbenutzer Abfragen abbrechen können, weisen Sie ihnen die Rollepg_signal_backendvom Admin-Benutzer zu.
pgaudit
- Der Dienst lädt die Bibliothek
pgauditbeim Start. Sie können die Erweiterungpgauditnicht erstellen, daher enthalten die DDL-Einträge in den Audit-Protokollen weder den Objekttyp noch den Namen. Informationen zum Aktivieren vonpgauditProtokollen finden Sie unter Protokollierung mitpgaudit…
pgvector
- Um die Erweiterung
pgvectorzu Ihrer Bereitstellung hinzuzufügen, verwenden Sie den Befehlcreate extension vector. - Wichtig:
pgvectorerfordert PostgreSQL Version 15 oder höher.
Verfügbare Erweiterungen
Sehen Sie sich die folgende Liste aller verfügbaren Erweiterungen an. Um eine Liste der verfügbaren Erweiterungen für Ihre Bereitstellung zu erhalten, verwenden Sie SELECT name FROM pg_available_extensions; in psql.
ibmclouddb=> SELECT name FROM pg_available_extensions order by 1;
name
------------------------------
address_standardizer
address_standardizer_data_us
amcheck
autoinc
bloom
btree_gin
btree_gist
citext
cube
dblink
dict_int
dict_xsyn
earthdistance
file_fdw
fuzzystrmatch
hstore
insert_username
intagg
intarray
isn
lo
ltree
moddatetime
old_snapshot
pageinspect
pg_buffercache
pg_freespacemap
pg_prewarm
pg_repack
pg_stat_statements
pg_surgery
pg_trgm
pg_visibility
pg_walinspect
pgaudit
pgcrypto
pgrouting
pgrowlocks
pgstattuple
plpgsql
postgis
postgis_raster
postgis_tiger_geocoder
postgis_topology
postgres_fdw
refint
seg
sslinfo
tablefunc
tcn
tsm_system_rows
tsm_system_time
unaccent
uuid-ossp
xml2
(55 rows)
ibmclouddb=> select version();
version
----------------------------------------------------------------------------------------------------------
PostgreSQL 16.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-2), 64-bit
(1 row)