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

  • La documentazione 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_repack possa 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_repack deve 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 il pg_signal_backend ruolo dall'utente amministratore.

pgaudit

  • pgaudit Le librerie sono precaricate e non richiedono l'esecuzione di create extension pgaudit. Per ulteriori informazioni, consultare la sezione " Registrazione con pgAudit " per abilitare i registri di pgaudit.

pgvector

  • Per aggiungere l'estensione pgvector alla distribuzione, usare il comando create extension vector.
  • Importante: pgvector richiede 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)