插件

PostgreSQL 中的扩展是功能强大的工具,允许用户扩展数据库系统的功能。 它们的范围可以从简单的 SQL 对象到复杂的二进制库,提供核心 PostgreSQL 发行版中未提供的额外特性和功能。

插件

若要定义扩展,它至少需要一个脚本文件和一个控件文件,前者包含 SQL 命令来创建扩展分发的对象,后者指定扩展本身的几个基本属性。

在数据库中创建、安装或加载扩展时,它们将部署一组旨在扩展引擎功能的捆绑对象。 这些对象可以是函数、运算符、角色、数据类型、访问方法和其他数据库对象类型。

从数据库中删除、卸载或取消加载扩展时,会删除扩展创建的所有对象。 这种情况的一个例外是,当数据库中有其他对象依赖于扩展定义的任何对象时。

扩展分发的对象所提供的功能的实现可以用 SQL 或 PL/pgSQL 来编写。 但是,它也可以在单独的共享库(二进制)文件中实现,这是编译源代码(通常用 C 或 Rust 编写)来实现该功能的结果。

在 PostgreSQL 中,扩展通过 CREATE EXTENSIONALTER EXTENSIONDROP EXTENSIONCOMMENT ON EXTENSION 命令进行管理。

  • CREATE EXTENSION 创建、安装扩展,或将扩展加载到执行命令的数据库中。
  • ALTER EXTENSION 将扩展更新到较新版本。
  • DROP EXTENSION 从执行命令的数据库中删除、卸载或取消加载扩展。
  • COMMENT ON EXTENSION 将关于扩展的注释作为数据库对象存储。

服务器启动时,会定义一个内存区域,所有后端进程都可访问该区域,以便协作运行任何工作负载。 在 PostgreSQL 行业术语中,该内存区域被称为“共享内存”。

某些使用共享库实现功能的扩展需要从这些库中生成的代码访问该共享内存。 这些扩展还有一个要求,即服务器启动时,主引擎进程必须加载其共享库文件。 对于这些库,需要按照加载库中的说明进行操作。