PostgreSQL之 使用扩展Extension

PostgreSQL被设计为易于扩展。因此,加载到数据库中的扩展功能就可以像内置的特性一样运行。
与源代码一起发布的contrib/ 目录包含一些扩展。扩展是独立开发的,比如PostGIS。甚至PostgreSQL复制解决方案也可以在外部开发。

例如,Slony-I是一个受欢迎的主/备用复制解决方案,它是独立于核心项目开发的。

PG源代码中包含的扩展列表参考:
https://www.postgresql.org/docs/9.6/static/contrib.html

PostgreSQL引入了一种方式来安装contrib模块,称为扩展(extensions)。
此方法适用于所有使用扩展规范构建的contrib模块,包括如下:
扩展SQL文件( extension_name.sql )
扩展控制文件 ( extension_name.control )

扩展库文件(extension_name.so)

找到系统中的contrib模块
检查你是否安装了contrib模块的一个好方法是查看pgbench程序是否可用。pgbench是安装了完整程序的少数contrib组件之一,而不仅仅只是你可以使用的一个脚本。以下是在UNIX系统中检查pgbench的示例:
$ pgbench -V

pgbench (PostgreSQL) 9.6

在大多数Linux系统中,如果用户使用的是RPM或DEB打包版本的PostgreSQL,则可选的postgresql-contrib软件包中包含所有contrib模块及其关联的安装程序脚本。如果尚未安装,你可能需要使用yum,apt-get或类似的机制添加此软件包。在Solaris系统上,这个软件包名为SUNWpostgr-contrib。

我们来看下面的命令,请注意必须用超级用户执行:
CREATE EXTENSION extension_name: 此命令将安装一个名为extension_name的新扩展
ALTER EXTENSION extension name: 此命令将更改扩展名,大多用于升级扩展。
DROP EXTENIONS extension_name: 在清理操作完成后,此命令用于删除一个扩展。

以上命令不能执行或执行报异常,一种可能是contrib模块没有执行编译安装,可以到contrib/目录下执行

make&make install完成编译安装后在尝试执行以上命令。

示例:
cd /software/postgresql-9.5.7/contrib
make
make install

testdb=# create extension pg_buffercache;
CREATE EXTENSION

testdb=# \dx
                      List of installed extensions
      Name      | Version |   Schema   |           Description           
—————-+———+————+———————————
 pg_buffercache | 1.1     | public     | examine the shared buffer cache
 pgstattuple    | 1.3     | public     | show tuple-level statistics
 plpgsql        | 1.0     | pg_catalog | PL/pgSQL procedural language

(3 rows)

这里新添加的扩展属于public模式,另外pg_catalog这个schema是PostgreSQL默认的元数据schema,所有的元数据都在这里。创建在pg_catalog里面的扩展优先级最高,所有用户可见。

可以运行如下指令指定或修改扩展的所属模式:

create extension extension_name with schema pg_catalog;
alter extension extension_name set schema pg_catalog;  

示例:
testdb=# alter extension pg_buffercache set schema pg_catalog;
ALTER EXTENSION

testdb=# \dx
                      List of installed extensions
      Name      | Version |   Schema   |           Description           
—————-+———+————+———————————

 pg_buffercache | 1.1     | pg_catalog | examine the shared buffer cache
 pgstattuple    | 1.3     | public     | show tuple-level statistics
 plpgsql        | 1.0     | pg_catalog | PL/pgSQL procedural language

testdb=# drop extension pg_buffercache ;

DROP EXTENSION

testdb=# \dx
                   List of installed extensions
    Name     | Version |   Schema   |         Description          
————-+———+————+——————————
pgstattuple | 1.3     | public     | show tuple-level statistics
plpgsql     | 1.0     | pg_catalog | PL/pgSQL procedural language

(2 rows)
扩展被添加到每个登录的数据库上,如果让每个数据库都可调用扩展模块,需要再每个库上执行create extension,也可以在模板库template1 上创建后,作为新建数据库的拷贝。

除了PostgreSQL核心自带的程序、contrib模块和pgFoundry上提供的软件之外,还可以从互联网上获取许多其他程序,以使PostgreSQL更易用和更强大。

by 波罗

转载自:https://blog.csdn.net/pg_hgdb/article/details/79490509

You may also like...