你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
PostgreSQL 中的扩展和模块是功能强大的工具,支持用户扩展数据库系统的功能。 它们的范围可以从简单的 SQL 对象到复杂的二进制库,提供核心 PostgreSQL 发行版中未提供的额外特性和功能。
扩展
若要定义扩展,至少需要一个包含 SQL 命令的 脚本文件 来创建扩展分发的对象,以及一个 控制文件 ,该文件指定扩展本身的几个基本属性。
在数据库中创建、安装或加载扩展时,它们将部署一组旨在扩展引擎功能的捆绑对象。 这些对象可以是函数、运算符、角色、数据类型、访问方法和其他数据库对象类型。
从数据库中删除、卸载或卸载扩展时,将删除扩展创建的所有对象。 这种情况的一个例外是,当数据库中有其他对象依赖于扩展定义的任何对象时。
扩展分发的对象所提供的功能的实现可以用 SQL 或 PL/pgSQL 来编写。 但是,它也可以在单独的共享库(二进制)文件中实现,这是编译源代码(通常用 C 或 Rust 编写)来实现该功能的结果。
在 PostgreSQL 中,扩展通过 CREATE EXTENSION、ALTER EXTENSION、DROP EXTENSION 和 COMMENT ON EXTENSION 命令进行管理。
-
CREATE EXTENSION创建、安装扩展,或将扩展加载到执行命令的数据库中。 -
ALTER EXTENSION将扩展更新到较新版本。 -
DROP EXTENSION从执行命令的数据库中删除、卸载或取消加载扩展。 -
COMMENT ON EXTENSION将扩展相关注释存储为数据库对象。
服务器启动时,它定义了所有后端进程可以访问的内存区域,以便协作运行任何工作负荷。 在 PostgreSQL 行业术语中,该内存区域被称为“共享内存”。
某些使用共享库实现功能的扩展需要从这些库中生成的代码访问该共享内存区域。 这些扩展还有一个要求,即服务器启动时,主引擎进程必须加载其共享库文件。 对于这些库,需要按照加载库中的说明进行操作。
模块
虽然不被视为扩展,但由于它们没有用于在数据库中部署捆绑的 SQL 对象的控制文件和脚本文件,PostgreSQL 中的另一种扩展形式包括实现独立共享二进制库文件中的功能。
这些文件还可以在服务器启动时加载到内存中,并实现可以影响 PostgreSQL 的自然执行路径的代码,从而改变引擎的默认功能。 此类行为更改通常旨在放大引擎的某些有限功能。
Azure Database for PostgreSQL 支持以下模块:
- auto_explain
- pg_failover_slots
- pg_partman_bgw
- wal2json