IBM Cloud Docs
管理PostgreSQL扩展

管理PostgreSQL扩展

在 PostgreSQL, 扩展是提供额外函数、运算符或类型的模块。 IBM Cloud® Databases for PostgreSQL中提供了许多扩展。 要使用这些密码,请为服务 设置管理密码,并使用该密码来 连接 psql

列出已安装的扩展

使用 \dx 命令获取数据库上安装的所有扩展的列表。

例如,在 Databases for PostgreSQL 缺省数据库上运行时,\dx 的输出将显示唯一已安装的扩展。

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

安装扩展

要在数据库上安装扩展,请使用 CREATE EXTENSION。 例如,要将 pg_stat_statements 添加到 ibmclouddb 数据库中,请使用以下命令:

ibmclouddb=> CREATE EXTENSION pg_stat_statements;
CREATE EXTENSION

扩展将安装到只读 ibm_extension 模式中。 该模式是 search_path 的一部分,因此不需要使用模式来限定扩展对象。 要保护数据的安全性和完整性,必须将 public 模式更改为 ibm_extension 模式。

如果在安装扩展后运行 \dx 命令,那么它将显示在表中。

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)

PostgreSQL 中的数据库扩展按数据库进行管理。 如果有多个数据库需要安装扩展,请对每个数据库运行 CREATE 命令。

升级扩展功能

如果有比您当前已安装的扩展更高版本的扩展可用,请使用 ALTER EXTENSION 对其进行升级。

扩展说明

pg_repack

  • pg_repack 文档

  • 运行 pg_repack 命令时,请输入 -k 标记,以绕过超级用户检查。 请参阅以下示例:

    pg_repack -k [OPTION]... [DBNAME]
    
  • 要使 pg_repack 可靠地运行,您的部署应该在 PostgreSQL 9.6 及更高版本上。

  • 任何用户都可以运行 pg_repack,但该命令只能重新打包他们具有许可权的表。

  • pg_repack 需要对它在重组结束时重组的对象执行互斥锁定。 如果在特定时间段后无法获取此锁定,那么将取消所有冲突的查询。 如果无法执行此操作,那么 reorg 将失败。 缺省情况下,只有 PostgreSQL 9.6 和更高版本上的管理用户才能取消有冲突的查询。 要向其他数据库用户公开取消查询的能力,请授予 pg_signal_backend 角色 从管理用户

pgaudit

  • pgaudit 库已预载,无需执行。create extension pgaudit 有关更多信息,请参阅 使用 pgAudit 启用 pgaudit 日志。

pgvector

  • 要在部署中添加 pgvector 扩展名,请使用 create extension vector 命令。
  • 重要:pgvector 需要 PostgreSQL 15 或更高版本。

可用扩展

请查看以下所有可用扩展列表。 要获取部署上可用扩展的列表,请在 psql 中使用 SELECT name FROM pg_available_extensions;

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)