0%

PostgreSQL插件及安装

PostgreSQL源码目录简介

contrib目录下的第三方插件

  • adminpack:一些管理函数
  • auth_delay:认证失败后延迟报异常,防止暴力破解
  • auto_explain:将超过指定执行时间的SQL执行计划输出到日志
  • btree_gin:gin索引方法的btree操作符扩展(某些情况下“多列gin组合索引”比“锁哥btree单列索引”的bitmap anding更高效
  • chkpass:自动加密的字段类型(用UNIXcrypt()进行封装,仅支持前8位安全)'abcdefghijkl'::chkpass = 'abcdefgh'
  • citext:不区分大小写的数据类型
  • cube:多维立方体类型,支持立方体对象的相同、相交和包含等关系
  • dblink:PostgreSQL跨库操作插件
  • dict_int:全文检索的字典模块,控制数字拆分最大长度,以确定数字在全文检索中的分词个数(maxlen = 6: 12345678被截断,rejectlong = true则忽略这个分词)
  • dict_xsyn:全文检索的字典模块,设置分词同义词,支持同义词匹配
  • dummy_seclabel:用于安全标签SQL测试
  • earthdistance:cube、point类型计算地球两点间距离
  • file_fdw:文件外部表模块
  • fuzzystrmatch:单字节字符串之间的相似性判断
  • hstore:存储kv数据类型,插件还提供了多个kv类型的函数和操作符,如数组、json、hstore间转换,kv存在判断,删除kv值
  • intagg:int类型数组聚合函数
  • intarray:int类型数组功能扩展
  • isn:国际通用产品标识码数据类型,如ISBN、ISMN等
  • lo:大对象可选木块,lo烈性和自动unlink大对象的trigger
  • ltree:异构数据类型及操作函数操作符
  • oid2name:oid转换成name的命令行工具,不属于extension
  • pageinspect:用于读取数据库PAGE裸信息插件,可以读main、fsm、vm、FORK的页数据,用于debug
  • passwordcheck:创建用户或修改用户密码时,检查密码安全性
  • pg_archivecleanup:清除归档文件的命令,不属于extension
  • pgbeanch:数据库性能测试,不属于extension
  • pg_buffercache,输出当前shared buffer状态数据,细化到page number
  • pgcrypto:服务端数据加密的扩展库
  • pg_freespacemap:从行头信息的infomask获取行锁信息
  • pg_standby:便于创建warm standby的命令行工具
  • pg_stat_statements:跟踪数据库SQL,收集统计信息
  • pgstattuple:行级统计信息,dead tuple、live tuples、table_len、free_space
  • pg_tset_fsync:测试磁盘fsync速率
  • pg_test_timing:测试系统定时器开销,开销越大,explain analyze时间结果越不准
  • pg_trgm:将字符串拆分成3个一组的多个单元,用于测试两个字符串之间相似度,比分词暴力
  • pg_upgrade:跨大版本的升级工具,如9.0->9.1
  • pg_upgrade_support –pg_upgrade用到的服务端函数集
  • pg_xlogdump:从xlog中dump出易读的底层信息
  • postgresfdw:跨库的外部表插件
  • seg:线段类型和浮点数的区间类型,及相关操作符,索引访问方法
  • sepgsql:基于SELinux安全策略的访问控制模块
  • spi:一些服务端的trigger函数
  • sslinfo:输入ssl认证的客户端认证信息
  • start-scripts:数据库启动脚本模块
  • tablefunc:用于行列变换,异构数据处理
  • tcn:提供异步消息输出的trigger
  • test_parser:全文检索中的自定义parser的测试插件
  • tserach2:全文检索相关插件,8.3以后不需要这个
  • unaccent:全文检索插件
  • uuid-ossp:生成UUID插件
  • vacuumlo:大对象垃圾回收命令
  • worker_spi:服务端worker编程返利
  • xml2:xml相关插件

PostgreSQL数据库结构介绍

  • base:对应pg_default(\db)表空间
  • global:对应pg_global表空间,存放集群中共享对象例pg__database表,包含控制文件等
  • pg_commit_ts:事务提交状态数据
  • pg_hba.conf:数据库访问控制文件
  • pg_log:数据库日志目录,根据配置定义,可能没有这个目录
  • pg_multixact:共享行锁的事务状态数据
  • pg_notify:异步消息相关的状态数据
  • pg_serial:串行隔离级别的事务状态数据
  • pg_snapshots:存储执行了事务snapshot导出的状态数据
  • pg_stat_tmp:统计信息的临时文件
  • pg_subtrans:子事务状态数据
  • pg_tblspc:表空间的软链接目录
  • pg_twophase:二阶事务的状态数据
  • PG_VERSION:数据库版本
  • postgresql.cofn:配置文件
  • postgresql.auto.conf
  • postmaster.opts:记录数据库启动时的命令行选项
  • postmaster.pid:数据库启动的主进程信息文件,如$PGDATA目录,数据库启动时间、监听端口、IPC信息等
  • pg_dynshmem
  • pg_ident.conf
  • pg_logical
  • pg_replslot
  • pg_stat
  • pg_wal:应该就是存储WAL文件吧
  • pg_xact

PostgreSQL第三方插件安装

  • 通常的安装方法:
    • 把第三方插件源码目录拷贝到contrib目录中
    • 把pg_config加到PATH中
    • make clean -j8 && make -j8 && make install -j8
    • create externsion XXX;方式进行插件安装