加载扩展

使用了 HOOK 的扩展插件需要显式加载,并重启数据库服务器生效。

安装 PostgreSQL 扩展后,您便可以在 PostgreSQL 的 pg_available_extensions 视图中看到它们。

除了纯 SQL 编写的扩展外,绝大多数扩展都会提供一个 .so 文件,这是一个动态连接库文件。

大部分扩展并不需要显式加载,只需要通过 CREATE EXTENSION 启用即可。 但一小部分扩展使用 PostgreSQL 的 Hook 机制,这些扩展必须通过 shared_preload_libraries 参数预先加载,并重启 PostgreSQL 后才能生效。 如果您在未加载/重启生效的情况下直接执行 CREATE EXTENSION 会报错。

在 Pigsty 中,您可以在集群的 pg_libs 参数中预先指定集群需要加载的扩展,或者在集群初始化后 修改集群配置


需要加载的扩展

扩展列表 中,带有 LOAD 标记的扩展,即为需要动态加载并重启的扩展,包括:

扩展名 标准名 说明
timescaledb timescaledb 时序数据库扩展插件
pgml pgml PostgresML:用SQL运行机器学习算法并训练模型
citus citus Citus 分布式数据库
pg_squeeze pg_squeeze 从关系中删除未使用空间
pgautofailover pgautofailover PG 自动故障迁移
pg_prewarm pg_prewarm 预热关系数据
pg_stat_kcache pg_stat_kcache 内核统计信息收集
bgw_replstatus bgw_replstatus 用于汇报本机主从状态的后台工作进程
auto_explain auto_explain 提供一种自动记录执行计划的手段
pg_stat_statements pg_stat_statements 跟踪所有执行的 SQL 语句的计划和执行统计信息
passwordcheck_cracklib passwordcheck 使用cracklib加固PG用户密码
supautils supautils 用于在云环境中确保数据库集群的安全
pg_tde pg_tde 试点性质的加密存储引擎
pgaudit pgaudit 提供审计功能
pg_snakeoil pg_snakeoil PostgreSQL动态链接库反病毒功能
pgextwlist pgextwlist PostgreSQL扩展白名单功能
sepgsql sepgsql 基于SELinux标签的强制访问控制
auth_delay auth_delay 在返回认证失败前暂停一会,避免爆破
passwordcheck passwordcheck 用于强制拒绝修改弱密码的扩展
pg_statement_rollback pg_statement_rollback 在服务端提供类似Oracle/DB2的语句级回滚能力
babelfishpg_tsql babelfishpg_tsql SQL Server SQL语法兼容性扩展

加载顺序

shared_preload_libraries 中,如果有多个扩展插件需要加载,可以使用逗号分隔,例如:

  • 'timescaledb, pg_stat_statements, auto_explain'

请注意,Citus 和 TimescaleDB 这两个扩展显式提出要求,要在 shared_preload_libraries 中预先加载,也就是放在最前面。

虽然同时使用 Citus 与 TimescaleDB 的情况非常罕见,但在这种情况中,建议将 citus 放在 timescaledb 之前。

Pigsty 默认会加载两个扩展:pg_stat_statementsauto_explain,这两个扩展对于优化数据库性能非常实用,强烈建议安装。


Last modified 2024-08-04: add extensions (25d8a2b)