Gestione delle estensioni PostgreSQL
In PostgreSQL, le estensioni sono moduli che forniscono funzioni, operatori o tipi aggiuntivi. Molte estensioni sono disponibili in IBM Cloud® Databases for PostgreSQL. Per utilizzarli, imposta la parola d'ordine di amministratore per il tuo servizio e utilizzalo per connetterti con psql.
Elenco delle estensioni installate
Ottenere un elenco di tutte le estensioni installate su un database utilizzando il comando \dx.
Ad esempio, l'output per \dx quando viene eseguito sul database predefinito Databases for PostgreSQL mostra l'unica estensione installata.
ibmclouddb=> \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(1 row)
Installazione delle estensioni
Per installare un'estensione in un database utilizzare CREATE EXTENSION. Ad esempio, per installare pg_stat_statements sul database ibmclouddb, utilizzare il seguente comando:
ibmclouddb=> CREATE EXTENSION pg_stat_statements;
CREATE EXTENSION
Le estensioni vengono installate nello schema ibm_extension di sola lettura. Lo schema fa parte di search_path quindi gli oggetti di estensione non devono essere qualificati con uno schema. La modifica da schema public a schema ibm_extension è necessaria per proteggere la sicurezza e l'integrità dei tuoi dati.
Se si esegue il comando \dx dopo l'installazione di un'estensione, viene visualizzato nella tabella.
ibmclouddb=> \dx
List of installed extensions
Name | Version | Schema | Description
--------------------+---------+---------------+-----------------------------------------------------------
pg_stat_statements | 1.5 | ibm_extension | track execution statistics of all SQL statements executed
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(2 rows)
Le estensioni database in PostgreSQL sono gestite per database. Se si dispone di più database su cui è necessario installare un'estensione, eseguire il comando CREATE su ciascun database.
Aggiornamento delle estensioni
Se è disponibile una versione più recente di un'estensione rispetto a quella attualmente installata, utilizzare ALTER EXTENSION per aggiornarla.
In particolare, quando si aggiorna l'estensione pg_repack, eliminare la versione precedente dal database e installare quella nuova.
Note specifiche per l'estensione
pg_repack
-
Quando si esegue il comando
pg_repack, passare il flag -k per aggirare il controllo del superutente. Vedi il seguente esempio:pg_repack -k [OPTION]... [DBNAME] -
Perché
pg_repackpossa essere eseguito in modo affidabile, la distribuzione deve essere su PostgreSQL 9.6 o superiore. -
Qualsiasi utente può eseguire
pg_repack, ma il comando è in grado di ricompilare solo una tabella su cui dispone delle autorizzazioni. -
pg_repackdeve prendere un blocco esclusivo sugli oggetti che sta riorganizzando alla fine della riorganizzazione. Se non può ottenere questo blocco dopo un determinato periodo, annulla tutte le query in conflitto. Se non può farlo, la riorganizzazione ha esito negativo. Per impostazione predefinita, solo l'utente amministratore su PostgreSQL 9.6 e versioni successive è in grado di annullare le query in conflitto. Per esporre la possibilità di annullare query ad altri utenti del database, concedi ilpg_signal_backendruolo dall'utente amministratore.
pgaudit
pgauditLe librerie sono precaricate e non richiedono l'esecuzione dicreate extension pgaudit. Per ulteriori informazioni, consultare la sezione " Registrazione con pgAudit " per abilitare i registri dipgaudit.
pgvector
- Per aggiungere l'estensione
pgvectoralla distribuzione, usare il comandocreate extension vector. - Importante:
pgvectorrichiede PostgreSQL versione 15 o superiore.
Estensioni disponibili
Vedere il seguente elenco di tutte le estensioni disponibili. Per un elenco delle estensioni disponibili sulla distribuzione, utilizzare 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)