Gestión de extensiones de PostgreSQL
En PostgreSQL, las extensiones son módulos que suministran tipos, operadores o funciones adicionales. Hay muchas extensiones disponibles en IBM Cloud® Databases for PostgreSQL. Para utilizarlos, configura la contraseña de administrador de tu servicio y, a continuación, utiliza para psql conectarte.
Listado de extensiones instaladas
Obtenga una lista de todas las extensiones instaladas en una base de datos utilizando el mandato \dx.
Por ejemplo, la salida de \dx cuando se ejecuta en la base de datos predeterminada de Databases for PostgreSQL muestra la única extensión instalada.
ibmclouddb=> \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(1 row)
Instalación de extensiones
Para instalar una extensión en una base de datos, utiliza CREATE EXTENSION. Por ejemplo, para instalar pg_stat_statements en la base ibmclouddb de datos, utiliza el siguiente comando :
ibmclouddb=> CREATE EXTENSION pg_stat_statements;
CREATE EXTENSION
Las extensiones se instalan en el esquema ibm_extension de sólo lectura. El esquema forma parte de search_path, por lo que no es necesario que los objetos de extensión se califiquen con un esquema. El cambio del esquema
public al esquema ibm_extension es necesario para proteger la seguridad y la integridad de los datos.
Si ejecuta el mandato \dx después de instalar una extensión, aparecerá en la tabla.
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)
Las extensiones de base de datos en PostgreSQL se gestionan para cada base de datos. Si tienes varias bases de datos en las que necesitas instalar una extensión, ejecuta el comando CREATE en cada una de ellas.
Actualización de extensiones
Para ver las extensiones de la base de datos actual para las que hay una versión más reciente disponible, ejecuta la siguiente consulta:
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;
Para actualizar una extensión, ejecuta el comando ALTER EXTENSION en cada base de datos en la que esté instalada la extensión:
ALTER EXTENSION <extension_name> UPDATE;
Las siguientes extensiones requieren un procedimiento diferente:
- Para actualizar la extensión
pg_repack, ejecute yDROP EXTENSION pg_repack;, a continuación, enCREATE EXTENSION pg_repack;cada base de datos que la utilice. - El anonimizador de PostgreSQL (
anon) no es compatible conALTER EXTENSION ... UPDATE. Para actualizarlo, consulta Actualización de PostgreSQL Anonymizer. - Al actualizar la versión 3.x, se pasa
pgRoutinga la versión 4.0, en la que se han eliminado varias funciones. Antes de actualizar, consultapgRouting.
Notas específicas de la extensión
pg_repack
-
Cuando ejecutes el comando
pg_repack, incluye el indicador -k para omitir la comprobación de superusuario. Consulte el ejemplo siguiente:pg_repack -k [OPTION]... [DBNAME] -
Cualquier usuario puede ejecutar
pg_repack, pero el mandato solo podrá volver a empaquetar una tabla sobre la que tenga permisos. -
pg_repacknecesita tener un bloqueo exclusivo sobre los objetos que va a reorganizar al final de la reorganización. Si no puede obtener este bloqueo después de un determinado periodo, cancelará todas las consultas en conflicto. Si no puede hacerlo, la reorganización fallará. Por defecto, solo el usuario administrador puede cancelar las consultas conflictivas. Para permitir que otros usuarios de la base de datos cancelen consultas, concédeles el rolpg_signal_backenddesde la cuenta de administrador.
pgaudit
- El servicio carga la biblioteca
pgaudital iniciarse. No se puede crear la extensiónpgaudit, por lo que las entradas DDL de los registros de auditoría no incluyen el tipo ni el nombre del objeto. Para activar lospgauditregistros, consulta Registro conpgaudit.
pgvector
- Para añadir la extensión
pgvectora su implantación, utilice el comandocreate extension vector. - Importante:
pgvectorrequiere PostgreSQL versión 15 o superior.
Extensiones disponibles
Consulte la siguiente lista de todas las extensiones disponibles. Para obtener una lista de las extensiones disponibles en el despliegue, utilice SELECT name FROM pg_available_extensions; en 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)