Postgresql17数据库中的扩展插件说明
PostgreSQL是一个功能强大、开源、支持多种数据模型的 关系型数据库管理系统(RDBMS)。它以其高可靠性、强大的功能、标准兼容性和可扩展性而闻名,被广泛用于从小型应用到大型企业级系统的各种场景。
1、所有可用的扩展
通过SELECT * FROM pg_available_extensions order by name 可查看所有可用的扩展。
1.1、地理空间与地址标准化 (PostGIS & Address Standardizer)
这些扩展提供地理空间数据处理和地址解析功能。
扩展名 | 作用 |
postgis / postgis-3 | 核心空间扩展:提供 geometry 和 geography 两种空间数据类型,以及大量空间函数(如距离计算、缓冲区、相交、投影转换等)。是构建 GIS 应用的基础。postgis-3 是版本别名。 |
postgis_raster / postgis_raster-3 | 栅格数据支持:允许在 PostgreSQL 中存储、查询和处理栅格数据(如卫星影像、DEM 高程图),并提供与矢量数据的集成分析功能。 |
postgis_sfcgal / postgis_sfcgal-3 | 3D 空间分析:基于 SFCGAL 库,提供高级 3D 几何操作,如三维布尔运算、体积计算、三维缓冲区等,适用于 BIM、城市建模等场景。 |
postgis_tiger_geocoder / postgis_tiger_geocoder-3 | 美国地址地理编码:基于美国人口普查局 TIGER 数据,将地址文本转换为地理坐标(正向编码),或将坐标转换为地址(反向编码)。常用于美国地区的地址标准化。 |
postgis_topology / postgis_topology-3 | 拓扑数据管理:提供拓扑数据模型,用于管理共享边界的面要素(如行政区划),确保空间关系的拓扑一致性(如无重叠、无缝隙)。 |
address_standardizer / address_standardizer-3 | 地址标准化引擎:将非结构化地址字符串(如 "123 main st, anytown")解析为结构化字段(街道、城市、州、邮编等),用于提高地理编码准确性。 |
address_standardizer_data_us / address_standardizer_data_us-3 | 美国地址数据集:为 address_standardizer 提供美国的地名、街道类型、缩写等词典数据,是其正常工作的数据依赖。 |
1.2、全文搜索与文本处理
提供高级文本搜索、相似性分析和字符处理功能。
扩展名 | 作用 |
fuzzystrmatch | 模糊字符串匹配:提供 levenshtein、soundex、difference 等函数,用于计算字符串间的编辑距离或音似度,适用于拼写纠错、姓名匹配。 |
pg_trgm | 三元组相似性搜索:基于 trigram(三个连续字符)的文本相似性度量和索引(GIN/GiST),支持 LIKE、ILIKE、正则表达式的高效模糊搜索。 |
unaccent | 去除重音符号:提供 unaccent() 函数,将带重音的字符(如 é, ñ)转换为基本 ASCII 字符(e, n),便于不区分重音的搜索。 |
dict_int | 整数文本搜索字典:允许在 tsvector 中索引整数,用于将数字视为“词”进行全文搜索。 |
dict_xsyn | 扩展同义词字典:提供同义词替换功能,可自定义同义词映射文件,扩展全文搜索的召回率。 |
xml2 | XML 处理:提供 XPath 查询、XSLT 转换、XML 解析/生成等函数,用于在数据库内处理 XML 数据。 |
1.3、安全与连接
增强数据库的安全性和外部连接能力。
扩展名 | 作用 |
pgcrypto | 加密函数:提供 crypt()、gen_salt()、pgp_encrypt()、pgp_decrypt() 等函数,用于密码哈希、数据加密、PGP 加解密等。 |
sslinfo | SSL 信息查询:提供函数获取当前连接的 SSL 证书信息(如客户端证书、加密套件),用于基于证书的身份验证和审计。 |
dblink | 跨数据库连接:允许在当前数据库会话中连接并查询其他 PostgreSQL 数据库,实现跨库数据操作。 |
postgres_fdw | 外部数据包装器:现代版 dblink,通过 FDW 接口访问远程 PostgreSQL 服务器的表,支持更高效的查询下推和连接优化。 |
file_fdw | 文件外部表:将 CSV、文本等文件映射为数据库表,可直接用 SQL 查询外部文件数据。 |
1.4、性能监控与诊断
用于监控数据库性能、检查内部结构和调试问题。
扩展名 | 作用 |
pg_stat_statements | SQL 性能分析:跟踪所有 SQL 语句的执行次数、总时间、平均时间、I/O 等,是性能调优的必备工具。 |
pg_buffercache | 缓冲区缓存检查:查看共享缓冲区中缓存了哪些数据页,用于分析内存使用和热点数据。 |
pg_freespacemap | 空闲空间映射检查:查看表和索引的空闲空间(FSM),帮助理解膨胀和 VACUUM 效果。 |
pg_visibility | 可见性映射检查:查看可见性映射(VM),了解哪些页面上的所有元组对所有事务都可见,影响 VACUUM 行为。 |
pageinspect | 页面级检查:深入检查表和索引的数据页、元组、堆头等内部结构,用于高级故障排查。 |
pgstattuple | 元组级统计:提供表和索引的元组级统计信息,如死元组数、膨胀率,用于分析表膨胀。 |
pg_walinspect | WAL 日志检查:查看 Write-Ahead Log (WAL) 记录的详细内容,用于灾难恢复分析和调试。 |
pg_prewarm | 数据预热:将表或索引的数据页加载到共享缓冲区,避免冷启动时的性能下降。 |
1.5、数据类型与通用功能
提供额外的数据类型、函数和工具。
扩展名 | 作用 |
hstore | 键值对存储:提供 hstore 数据类型,用于存储简单的 (key => value) 对集合,是 JSON 之前的轻量级 NoSQL 结构。 |
jsonb | JSON 支持(未列出但重要):原生支持 JSON 数据,jsonb 支持索引和高效查询。 |
citext | 大小写不敏感字符串:citext 类型在比较时忽略大小写,适用于邮箱、用户名等字段。 |
intarray | 整数数组操作:提供对一维整数数组的专用操作符和函数(如交集、并集、排序),并支持 GIN/GiST 索引。 |
ltree | 树形结构:提供 ltree 类型用于存储路径式标签(如 Top.Level.Deep),支持路径匹配查询,适用于分类树、组织架构。 |
cube | 多维立方体:cube 类型用于表示多维空间中的点或框,支持 L1/L2/无穷范数距离和 GiST 索引,用于多维数据搜索。 |
seg | 线段/区间:seg 类型用于表示一维浮点区间或二维线段,支持 GiST 索引,适用于范围查询。 |
isn | 国际编号标准:提供 ISBN、ISSN、EAN13 等国际产品编号类型,自动验证格式和校验码。 |
uuid-ossp | UUID 生成:提供 uuid_generate_v1(), uuid_generate_v4() 等函数,生成版本 1(时间戳)和版本 4(随机)的 UUID。 |
tablefunc | 表函数:提供 crosstab()(生成交叉表/透视表)、normal_rand() 等函数。 |
vector | 向量数据类型:提供 vector 类型用于 AI/ML 场景,支持 IVFFlat 和 HNSW 索引,用于向量相似性搜索(如语义搜索)。 |
1.6、索引与完整性
提供特殊索引方法和完整性约束支持。
扩展名 | 作用 |
btree_gin | GIN 中的 B-Tree 支持:允许在 GIN 索引中索引基本数据类型(int, text, timestamp 等),用于复合 GIN 查询。 |
btree_gist | GiST 中的 B-Tree 支持:类似 btree_gin,但在 GiST 索引中支持基本类型,还用于范围类型、EXCLUDE 约束。 |
gist | 通用搜索树(内建):支持多维数据、范围、全文搜索的索引。 |
gin | 通用倒排索引(内建):适用于数组、全文搜索、hstore、jsonb 等。 |
bloom | Bloom Filter 索引:基于签名文件的索引,空间效率高,用于快速排除不匹配的行(可能有假阳性)。 |
tsm_system_rows / tsm_system_time | TABLESAMPLE 方法:提供基于行数或时间的系统采样方法,用于快速获取数据子集进行分析。 |
1.7、触发器与审计
用于数据变更跟踪和通知。
扩展名 | 作用 |
insert_username | 自动填充用户名:提供触发器函数,在插入/更新时自动设置记录的创建/修改用户。 |
`moddatetime`` | 自动填充修改时间:提供触发器函数,自动更新记录的最后修改时间戳。 |
tcn | 触发变更通知:提供触发器,当表数据变更时通过 NOTIFY 发送消息,用于实现简单的事件驱动架构。 |
pgrowlocks | 行锁信息:显示表中被锁定的行及其锁定事务信息,用于锁争用分析。 |