PostgreSQL插件

news/2025/11/26 16:20:11/文章来源:https://www.cnblogs.com/ivictor/p/19271999

如何查看扩展

  • 当前实例支持的扩展:pg_available_extensions 列出可用扩展(在安装包里有 .control 文件的扩展),这是服务器级别的。

  • 当前数据库里已安装的扩展pg_extension 或者 \dx。

注意,如果需要扩展可用,但每个数据库都需要自己安装才能使用。

 

pg_available_extensions

从 pg_available_extensions 中看到的扩展信息实际上来源于 share/extension/,share/extension/ 是 PostgreSQL 安装目录下的一个子目录,用于存放扩展的控制文件(.control)和 SQL 安装脚本。如果用源码编译安装, share/extension/的路径是在 /usr/local/pgsql/share/extension/。

$ ll /usr/local/pgsql/share/extension
total 76
-rw-r--r-- 1 root root 13208 Jun 15 08:26 pg_repack--1.5.2.sql
-rw-r--r-- 1 root root   179 Jun 15 08:26 pg_repack.control
...
-rw-r--r-- 1 root root 2114 Jul 6 09:00 pg_stat_statements--1.9--1.10.sql -rw-r--r-- 1 root root 205 Jul 6 09:00 pg_stat_statements.control -rw-r--r-- 1 root root 658 May 13 2025 plpgsql--1.0.sql -rw-r--r-- 1 root root 193 May 13 2025 plpgsql.control

里面有两类文件:

  • .control 文件:定义扩展名称、版本等信息

  • --<版本>.sql 文件:安装或升级扩展的 SQL 脚本

Datum
pg_available_extensions(PG_FUNCTION_ARGS)
{ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo;char       *location;DIR           *dir;struct dirent *de;/* Build tuplestore to hold the result rows */InitMaterializedSRF(fcinfo, 0);location = get_extension_control_directory();dir = AllocateDir(location);/** If the control directory doesn't exist, we want to silently return an* empty set.  Any other error will be reported by ReadDir.*/if (dir == NULL && errno == ENOENT){/* do nothing */}else{while ((de = ReadDir(dir, location)) != NULL){ExtensionControlFile *control;char       *extname;Datum        values[3];bool        nulls[3];if (!is_extension_control_filename(de->d_name))continue;/* extract extension name from 'name.control' filename */extname = pstrdup(de->d_name);*strrchr(extname, '.') = '\0';/* ignore it if it's an auxiliary control file */if (strstr(extname, "--"))continue;control = read_extension_control_file(extname);memset(values, 0, sizeof(values));memset(nulls, 0, sizeof(nulls));/* name */values[0] = DirectFunctionCall1(namein,CStringGetDatum(control->name));/* default_version */if (control->default_version == NULL)nulls[1] = true;elsevalues[1] = CStringGetTextDatum(control->default_version);/* comment */if (control->comment == NULL)nulls[2] = true;elsevalues[2] = CStringGetTextDatum(control->comment);tuplestore_putvalues(rsinfo->setResult, rsinfo->setDesc,values, nulls);}FreeDir(dir);}return (Datum) 0;
}

上述代码是 PostgreSQL 内部实现 pg_available_extensions() 的 C 语言函数。它的作用是扫描 share/extension/目录并返回可用的扩展信息。

如果删除了share/extension/目录下对应扩展的.control 文件 和 .sql 文件,则再次查询 pg_available_extensions 就看不到对应的扩展信息。

 

如何安装 pg_stat_statements

1. 查看插件是否存在

SELECT * FROM pg_available_extensions WHERE name='pg_stat_statements';  

2.  不存在的话

进入 PostgreSQL 源码目录

cd contrib/pg_stat_statements
make
make install

3. 在数据库中创建扩展

\c your_database_name
CREATE EXTENSION pg_stat_statements;
\dx

此时,如果直接查询 pg_stat_statements 的话,会提示:

ERROR:  pg_stat_statements must be loaded via shared_preload_librarie

4. 设置 shared_preload_libraries

确保在 postgresql.conf 中启用了统计:

shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.track = all
pg_stat_statements.max = 10000        # 可按需调整
pg_stat_statements.track_utility = on # 可选,统计 utility 命令

注意,修改 shared_preload_libraries 需要 重启 PostgreSQL 才生效。

5. 重启实例。

$ pg_ctl restart -D /data/pgsql/5432/data/

6. 查询 pg_stat_statements。

SELECT *
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

pg_stat_statements 文档:https://www.postgresql.org/docs/current/pgstatstatements.html#PGSTATSTATEMENTS-PG-STAT-STATEMENTS-INFO

 

如何删除 pg_stat_statements

1. 不卸载扩展,只把统计数据清零:

SELECT pg_stat_statements_reset();

2. 卸载删除 pg_stat_statements 扩展

DROP EXTENSION pg_stat_statements;

注意

  • 只能在当前数据库卸载
  • 若其他数据库也安装了,需要逐库 drop

卸载前必须确认 shared_preload_libraries 不再包含 pg_stat_statements

编辑 postgresql.conf 注释掉:

shared_preload_libraries = 'pg_stat_statements'

然后重启 PostgreSQL。

3.  删除扩展的文件(极少需要)

如果你想 彻底删除扩展文件(一般不建议):

路径通常在:$PGHOME/share/extension/

删除:

pg_stat_statements.control
pg_stat_statements--*.sql

再从 lib 目录删除 .so:

$PGHOME/lib/pg_stat_statements.so

这通常用于自定义编译或安装冲突排查,不建议在生产环境手动删文件。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/977351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从 50 步到 4 步:LightX2V 如何把视频生成拉进20 秒时代?

从 50 步到 4 步:LightX2V 如何把视频生成拉进20 秒时代? 还在为高质量视频生成「又慢又重」头疼吗? 传统扩散式视频生成模型往往需要20~50步迭代过程,即便生成几十帧的短视频,也需长时间占用GPU资源,日志持续输…

基于MATLAB的Tent映射参数化三维轨迹可视化实现

一、算法原理与参数影响 Tent映射的数学表达式为:其中参数μ∈(0,1)控制映射的非线性特性:μ=0.5时对称性最佳,遍历性最强 μ→0时呈现左偏震荡 μ→1时趋近于右偏线性映射二、三维轨迹生成函数实现 function tent_…

保存文件到当前目录

要将文件生成在与程序相同的文件夹下,只需将绝对路径改为相对路径。以下是修改后的代码: import os # 导入os模块if event == 保存:# 获取当前脚本所在目录,并拼接文件名file_path = os.path.join(os.path.dirname…

2025 年冷却塔施工单位最新推荐榜,聚焦技术创新与服务品质的优质企业深度解析冷却塔美化/冷却塔防腐/冷却塔彩绘/冷却塔维修/冷却塔绘画公司推荐

引言 冷却塔作为工业生产核心配套设施,其防腐、维修、美化等施工质量直接决定设备运行效率与生产安全。当前行业面临能效标准升级、场景需求分化、售后体系缺失等多重挑战,而资质不齐、工艺落后、响应迟缓等问题仍较…

2025年北京徒手私密培训公司权威推荐榜单:男性生殖保健按摩培训‌/男性私密培训‌/私密培训源头公司精选

在男性健康管理意识不断提升的背景下,专业的徒手私密培训服务正以其规范化的技术体系和显著的经营赋能效果,成为健康服务领域的新兴增长点。 徒手私密培训通过专业的技术教学和系统的运营支持,帮助从业者提升专业技…

2025 年石材养护服务商最新推荐榜,技术实力与市场口碑深度解析,专业服务与长效保障兼具的优质品牌大理石石材翻新/石材维保托管/石材结晶/石材维修病变治理/石材清洗防护/石材仿古处理公司推荐

引言 石材作为高端建筑与商业空间的核心装饰材料,其养护质量直接关乎空间美学与资产价值,而高频使用场景下的磨损、病变等问题更对服务商提出严苛要求。本次推荐榜基于国际石材养护协会(ISCA)最新测评数据,结合近…

PySimpleGUI 如何设置事件的监听器

在 PySimpleGUI 中,事件的监听主要通过 window.read() 方法结合事件循环实现。以下是详细说明和示例:1. 基本事件监听流程 PySimpleGUI 的事件监听基于 事件驱动模型,核心步骤如下:创建窗口和控件,为需要监听的控…

2025 年 11 月中央空调租赁厂家权威推荐榜:大型中央空调/厂房空调/商场写字楼空调/工业大功率空调,专业租赁服务与高效节能解决方案精选

2025 年 11 月中央空调租赁厂家权威推荐榜:大型中央空调/厂房空调/商场写字楼空调/工业大功率空调,专业租赁服务与高效节能解决方案精选 行业背景与发展趋势 随着我国经济结构持续优化和产业升级步伐加快,中央空调租…

AI 搜索排名优化:DeepSeek、豆包、百度 AI、ChatGPT 四大平台适配与主流服务商解析(含低知名度专精企业)

一、AI 搜索优化行业背景​ 当前生成式 AI 已占据 67% 的商业流量入口,GEO(生成式引擎优化)成为企业数字营销的核心赛道。据中国信通院 2025 年数据,国内 GEO 市场规模突破千亿元,年复合增长率达 87%;CNNIC 同期…

QButtonGroup

QButtonGroup:是一个不可见的逻辑容器。它专门用于管理一组按钮的互斥行为(确保一组单选按钮中只有一个被选中),它不负责按钮的排列和显示。

Claude-cursor 同步各种数据

cursor 同步各种数据 Created: 10/31/2025 10:13:59 Updated: 11/26/2025 9:49:26 Exported: 11/26/2025 9:53:38 Link: https://claude.ai/chat/95e1a904-6cc3-47eb-b910-5c2b5da17fe9 Prompt: 2025/10/31 10:14:01 c…

2025 精密金属制造权威榜单:10 家标杆企业,六项认证 + 进口设备成核心竞争力

精密金属制造是现代工业的 “隐形基石”,小到电子元件的微米级结构,大到航空航天的核心部件,都离不开毫米级精度的加工工艺。2025 年智能制造升级加速,具备权威认证、高端设备和技术沉淀的厂家成为行业标杆。这份榜…

QGroupBox

QGroupBox:是一个可见的、有形的界面容器。它的主要作用是视觉分组和布局,让界面更美观。

C++新手怎么快速学习

C++新手怎么快速学习C++ 新手快速入门的核心是 “聚焦核心语法→动手实践→解决小问题→循序渐进”,避免陷入 “只看书不写代码” 或 “贪多嚼不烂” 的误区。以下是一套高效的 4 周学习路线,结合资源、方法和避坑指…

2025年广州消泡剂691F公司权威推荐榜单:消泡剂NXZ‌/消泡剂902W‌/消泡剂S300源头公司精选

在2025年工业绿色化转型的浪潮中,性能优异的消泡剂已成为提升生产效率与产品质量的关键助剂。其中,广州恒宇化工有限公司凭借其代理的消泡剂691F等核心产品,在华南市场表现突出。 本文将基于企业资质、产品性能、市…

【webPack|Vite】了解常用安装,重要差异

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【中国科学报社、中国石油大学(北京)联合主办,IEEE出版】第五届电气工程与控制科学国际学术会议 (IC2ECS 2025)

【中国科学报社、中国石油大学(北京)联合主办,IEEE出版】第五届电气工程与控制科学国际学术会议 (IC2ECS 2025)第五届电气工程与控制科学国际学术会议 (IC2ECS 2025) 截稿时间:多轮截稿,官网为准 组织单位 主办单…

在Ubuntu 22.04系统上安装MariaDB

更新系统包列表 首先,打开终端并运行以下命令来更新Ubuntu的包列表: sudo apt update 这将确保你安装的是最新版本的软件包。 安装MariaDB服务器 接下来,使用下面的命令安装MariaDB服务器: sudo apt install maria…

minio列出文件后统计处理

# 将列表输出到文件/opt/minio_client/mc ls --recursive langfuse_minio/langfuse > minio_file_list.txt文件日期排查[root@localhost ~]# cat minio_file_list.txt|awk {print $1}|tr -d [|sort -k 1 -u2025-11-…

2025 年浮动油封厂家最新推荐榜,技术创新与市场口碑深度解析:适配严苛工况的优质品牌工程机械 / 矿山机械 / 煤矿井下 / 煤矿机械油封推荐

引言 浮动油封作为矿山机械、硬岩盾构机等极端工况设备的核心密封部件,其可靠性直接决定设备停机损失与运维成本。据国际密封件协会(IDA)2024 年度测评数据显示,优质油封可使设备故障率降低 67%,使用寿命延长 2-3…