IBM Cloud Docs
Gerenciando extensões do PostgreSQL

Gerenciando extensões do PostgreSQL

No PostgreSQL, extensões são módulos que fornecem funções, operadores ou tipos adicionais. Há muitas extensões disponíveis no IBM Cloud® Databases for PostgreSQL. Para utilizá-las, configure a senha admin para o seu serviço e use-a para conectar com psql.

Listando extensões instaladas

Obtenha uma lista de todas as extensões instaladas em um banco de dados usando o comando \dx.

Por exemplo, a saída para \dx quando executado no banco de dados padrão do Databases for PostgreSQL mostra a única extensão instalada.

ibmclouddb=> \dx
                 List of installed extensions
  Name   | Version |   Schema   |         Description
---------+---------+------------+------------------------------
 plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language
(1 row)

Instalando extensões

Para instalar uma extensão em um banco de dados, use CREATE EXTENSION. Por exemplo, para instalar o pg_stat_statements no banco de dados ibmclouddb, use o seguinte comando:

ibmclouddb=> CREATE EXTENSION pg_stat_statements;
CREATE EXTENSION

Extensões são instaladas no esquema ibm_extension somente leitura. O esquema faz parte dos search_path so objetos de extensão não precisam ser qualificados com um esquema. A mudança de esquema public para esquema ibm_extension é necessária para proteger a segurança e a integridade de seus dados.

Se você executar o comando \dx depois de instalar uma extensão, ele aparecerá na tabela.

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)

As extensões do banco de dados no PostgreSQL são gerenciadas por banco de dados. Se você tiver vários bancos de dados nos quais precisa instalar uma extensão, execute o comando CREATE em cada banco de dados.

Fazendo upgrade de extensões

Se houver uma versão de extensão mais nova disponível, use o ALTER EXTENSION para fazer upgrade dela.

Notas específicas da extensão

pg_repack

  • A documentação pg_repack

  • Ao executar o comando pg_repack, passe o sinalizador -k para ignorar a verificação de superusuário. Consulte o seguinte exemplo:

    pg_repack -k [OPTION]... [DBNAME]
    
  • Para que o pg_repack seja executado de forma confiável, sua implementação deve estar no PostgreSQL 9.6 e mais recente.

  • Qualquer usuário pode executar pg_repack, mas o comando só é capaz de reembalar uma tabela na qual tenha permissões.

  • pg_repack precisa ter um bloqueio exclusivo nos objetos que está reorganizando no término da reorganização. Se não conseguir obter esse bloqueio após um determinado período, ele cancelará todas as consultas em conflito. Se não for possível fazer isso, a reorganização falhará. Por padrão, apenas o usuário administrativo no PostgreSQL 9.6 e mais recente é capaz de cancelar consultas conflitantes. Para expor a capacidade de cancelar consultas a outros usuários de banco de dados, conceda a função pg_signal_backend a partir do usuário admin.

pgaudit

  • pgaudit as bibliotecas são pré-carregadas e não exigem a execução de create extension pgaudit. Para obter mais informações, consulte Registro com pgAudit para ativar os registros do pgaudit.

pgvetor

  • Para adicionar a extensão pgvector à sua implantação, use o comando create extension vector.
  • Importante: o site pgvector requer a versão 15 ou superior do PostgreSQL.

Extensões disponíveis

Consulte a lista a seguir de todas as extensões disponíveis. Para obter uma lista de extensões disponíveis em sua implementação, use SELECT name FROM pg_available_extensions; no 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)