0%
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;方式进行插件安装