您现在的位置: 通信界 >> 接入系统 >> 技术正文  
 
PostgreSQL中插件如何新增一个配置项
[ 通信界 / yzsDBA / www.cntxj.net / 2022/10/30 18:50:19 ]
 

PostgreSQL通过插件可以集成许多扩展,比如auth_delay。添加插件时,会引入一些guc配置变量,比如auth_delay的auth_delay.milliseconds。那么这些变量是如何随着插件的安装集成到server中呢?在系统中又是如何管理的呢?

我们先看下guc参数是如何管理的。

首先初始化GUC选项,将其设置为默认值;然后读取命令行配置,最后读取配置文件postgresql.conf中的配置项。

1 初始化默认值

有5类参数:ConfigureNamesBool、ConfigureNamesInt、ConfigureNamesReal、ConfigureNamesReal、ConfigureNamesEnum。

image.png

build_guc_variables完成空间申请:循环计算出所有变量个数,申请一个大空间config_generic *guc_vars[]数组,将所有变量值都放到这个数组里面,然后按字母顺序排序。最终将全局变量guc_variables也指向guc_vars数组,变量个数num_guc_variables。guc_variables[]数组大小为当前参数总数的1.25倍,主要方便以后参数的扩充。例如:

InitializeOneGUCOption初始化默认值:循环调用该函数,将所有参数设置为默认值。

InitializeGUCOptionsFromEnvironment完成环境变量 值的获取:从PGPORT、PGDATESTYLE、PGCLIENTENCODING中获取,不为空则调用SetConfigOption函数来设置这三个变量对于的参数值。最后检查系统最大安全栈深度。如果这个深度大于100KB并且不超过2MB,则用它设置max_stack_depth参数。

2 命令行配置GUC参数

如果启动PG进程时,通过命令行参数指定了一些GUC的参数值,那需要从命令行中将这些参数值解析出来并设置到相应GUC参数中。根据命令行配置主要调用函数getopt和SetConfigOption来配置,比如:

3 配置文件读取

最后调用SelectConfigFiles读取配置文件中值重新配置参数。需要注意,配置文件中设置的参数都不能修改之前通过命令行已经设置的参数,因其优先级没有命令行优先级高。

至此,了解到配置项是如何管理的。接着看下auth_delay插件中如何新增一个变量。

4 auth_delay新增配置项

该插件在_PG_init函数中新增定义一个GUC变量。上图所示,由函数DefineCustomIntVariable来完成,auth_delay新增的配置项是auth_delay.millisenconds,对应到程序中是auth_delay_milliseconds变量。

主要调用函数init_custom_variable和define_custom_variable。init_custom_variable函数主要申请一个config_generic空间,并初始化generic域。define_custom_variable函数完成新变量的定义与增加:

该函数会先从guc_variables数组中查询,看有没有已经加载,比如在postgresql.conf中配置了。未配置的的调用InitializeOneGUCOption和add_guc_variable新增一个变量。它也是先初始化为默认值,然后添加到guc_variables数组中,最后排序。若在postgresql.conf中配置,则将其值重新配置到变量中。

至此,插件中新定义的配置项及其值加载到了server中。

 

作者:yzsDBA 合作媒体:通信界 编辑:顾北

 

 

 
 热点技术
普通技术 PostgreSQL中插件如何新增一个配置项
普通技术 使用 Fastai 构建食物图像分类器
普通技术 线缆基础设施的未来发展:数据性能要求如何塑造数据中心架构
普通技术 NFC Forum发布导向标识系统,四个好记图标带着NFC走遍世界
普通技术 Lua面向对象编程的基本原理示例
普通技术 Arm Neoverse路线图再添新丁!为全球计算基础设施奠定新的起点
普通技术 世界越来越热,数据中心可不能跟着升温
普通技术 用户带宽增长驱动核心路由器演进
普通技术 赋能下一代5G平台
普通技术 航天新通QSite,助力5G新基建
普通技术 5G+4G无线网络协同及组网关键技术探讨
普通技术 面向5G前传的半有源WDM技术创新
普通技术 亚马逊云计算迎来史上最低增速 营收利润未达华尔街预期
普通技术 华为王金平:扩大体验红利格局,引领体验经营时代
普通技术 兔宝宝质量新突破,“康耐板”解决生态板行业难题
普通技术 无源物联网如何大规模应用?飞英思特“环境取能”技术成破局关键
普通技术 基于传感器的气象环境网格监测系统有效改善环境问题
普通技术 【技术分享】持续升级的TWS方案
普通技术 超声波触控技术:可穿戴设备和大型显示屏市场的新爆点
普通技术 5G中的DPD技术,怎么玩?
  版权与免责声明: ① 凡本网注明“合作媒体:通信界”的所有作品,版权均属于通信界,未经本网授权不得转载、摘编或利用其它方式使用。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:通信界”。违反上述声明者,本网将追究其相关法律责任。 ② 凡本网注明“合作媒体:XXX(非通信界)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。 ③ 如因作品内容、版权和其它问题需要同本网联系的,请在一月内进行。
通信视界
韦乐平:网络深度转型最明确的方向首先就是云
爱立信中国区总裁方迎:将在中国市场重点做好
普通对话 NVIDIA发力数字孪生:站在虚拟和现实之间
普通对话 韦乐平:网络深度转型最明确的方向首先就是云
普通对话 中国工程院院士邬贺铨:6G标准面临小圈子风险
普通对话 华为丁耘:绿色ICT,共创新价值
普通对话 爱立信中国区总裁方迎:将在中国市场重点做好
普通对话 中国联通买彦州:广电5G商用对行业竞争格局不
普通对话 中国联通陈忠岳:从“提速降费”向“提速提质
普通对话 华为胡厚崑:5G+工业互联网 数据驱动是关键
普通对话 华为郭平:每个人磨好自己的豆腐,就会有一个
普通对话 中国移动杨杰:加快推进新型平台用工模式规范
普通对话 中国移动简勤:5G引领数字化转型 终端承载应用
普通对话 专访GSMA刘鸿:5G专网谁来建?运营商是最佳选
普通对话 华为甘斌:预计2021年5G用户将超5亿
普通对话 郄勇志:小米被美拉黑事件启示:实现科技自立
普通对话 闻库:要有打造“数字中国 光网底座”的使命感
通信前瞻
中国移动李慧镝:强化数智基建驱动 推进产业转
苏少林:打造北京数字经济“五强”,助力标杆
普通对话 多管齐下,VMware跨云服务助力企业云转型
普通对话 中国移动李慧镝:强化数智基建驱动 推进产业转
普通对话 苏少林:打造北京数字经济“五强”,助力标杆
普通对话 中国科大在高安全量子密钥分发网络方面取得新
普通对话 华为杨超斌:迈向5.5G持续创新,开启5G产业新
普通对话 中国联通买彦州:加强创新力度,协同推进6G技
普通对话 信通院总工敖立:5G工业模组是产业链特别短板
普通对话 中兴通讯首席发展官崔丽:澎湃“数”动能,助
普通对话 中国移动赵大春:力推北斗与5G产业深度融合
普通对话 信通院徐菲:争取2021年实现端到端网络切片自
普通对话 杨泽民:光网络发展挑战与机遇并存
普通对话 张杰:“双千兆”发展面临四大核心挑战
普通对话 中国移动董事长杨杰:共创信息服务新生态 共拓
普通对话 王志勤:“5G+工业互联网”产业发展初期仍面临
普通对话 中国电信董事长柯瑞文:5G+云网,助力VR产业发