PostgreSQL 配置设置函数
PostgreSQL 配置设置函数
PostgreSQL 提供了一组配置设置函数(Configuration Settings Functions),用于查询和修改数据库服务器的运行时配置参数。这些函数为数据库管理员提供了动态管理数据库配置的能力,无需重启数据库服务。
一、核心配置函数概览
函数 | 描述 | 权限要求 | 返回值 |
---|---|---|---|
current_setting(setting_name) | 获取当前参数值 | 所有用户 | text |
set_config(setting_name, new_value, is_local) | 设置参数值 | 视参数而定 | text |
pg_settings 视图 | 查看所有配置参数 | 所有用户 | 多列结果 |
二、函数详解与使用示例
1. 查询配置参数
基本查询:
-- 获取当前work_mem设置
SELECT current_setting('work_mem');-- 获取多个参数
SELECT current_setting('shared_buffers') AS shared_buffers,current_setting('work_mem') AS work_mem,current_setting('maintenance_work_mem') AS maintenance_work_mem;
使用pg_settings视图:
-- 查看所有可动态修改的参数
SELECT name, setting, unit, context
FROM pg_settings
WHERE context IN ('user', 'superuser');
2. 修改配置参数
动态修改会话级参数:
-- 仅对当前会话有效
SELECT set_config('work_mem', '16MB', false);-- 验证修改
SELECT current_setting('work_mem');
修改事务级参数:
BEGIN;
SELECT set_config('work_mem', '32MB', true); -- true表示仅当前事务有效
-- 执行需要更多内存的操作
COMMIT;
-- 参数会自动恢复原值
三、配置参数上下文分类
PostgreSQL 参数按修改要求分为多个上下文类别:
上下文 | 修改要求 | 示例参数 |
---|---|---|
internal | 编译时固定 | block_size |
postmaster | 需要重启 | shared_buffers |
sighup | 需要重载配置 | log_min_duration_statement |
superuser | 超级用户可动态修改 | work_mem |
user | 任何用户可动态修改 | DateStyle |
查询参数上下文:
SELECT name, context, setting, short_desc
FROM pg_settings
WHERE name IN ('shared_buffers', 'work_mem', 'log_min_duration_statement');
四、生产环境最佳实践
1. 参数修改工作流
-- 1. 检查当前值
SELECT name, setting, unit FROM pg_settings WHERE name = 'work_mem';-- 2. 测试性修改(会话级)
SELECT set_config('work_mem', '32MB', false);-- 3. 验证效果
EXPLAIN ANALYZE SELECT * FROM large_table ORDER BY random();-- 4. 确认后修改配置文件
-- ALTER SYSTEM SET work_mem = '32MB';-- 5. 重载配置(不需要重启)
SELECT pg_reload_conf();
2. 参数修改追踪
-- 创建参数修改历史表
CREATE TABLE config_change_history (id SERIAL PRIMARY KEY,parameter_name TEXT NOT NULL,old_value TEXT,new_value TEXT,changed_by TEXT DEFAULT current_user,change_time TIMESTAMP DEFAULT now(),change_level TEXT CHECK (change_level IN ('SESSION', 'SYSTEM'))
);-- 创建参数修改触发器函数
CREATE OR REPLACE FUNCTION log_config_change()
RETURNS TRIGGER AS $$
BEGININSERT INTO config_change_history(parameter_name, old_value, new_value, change_level)VALUES(TG_ARGV[0], OLD.setting, NEW.setting, TG_ARGV[1]);RETURN NEW;
END;
$$ LANGUAGE plpgsql;
五、重要注意事项
-
权限控制:
- 普通用户只能修改
user
上下文的参数 - 超级用户可修改所有非
internal
参数
- 普通用户只能修改
-
作用范围:
- 使用
set_config
的修改默认仅影响当前会话 - 持久化修改需要使用
ALTER SYSTEM
或直接编辑postgresql.conf
- 使用
-
性能影响:
- 某些参数修改可能导致性能波动(如work_mem)
- 生产环境修改前应在测试环境验证
-
参数相关性:
-- 查询相关参数组 SELECT name, category, short_desc FROM pg_settings WHERE category LIKE '%Memory%' ORDER BY category, name;
-
版本差异:
- 不同PostgreSQL版本可用参数可能不同
- 参数默认值可能随版本变化
通过合理使用这些配置函数,DBA可以灵活优化数据库性能,适应不同的工作负载需求,而无需频繁重启数据库服务。
相关文章:
PostgreSQL 配置设置函数
PostgreSQL 配置设置函数 PostgreSQL 提供了一组配置设置函数(Configuration Settings Functions),用于查询和修改数据库服务器的运行时配置参数。这些函数为数据库管理员提供了动态管理数据库配置的能力,无需重启数据库服务。 …...

2025年5月-信息系统项目管理师高级-软考高项-成本计算题
成本计算题挣值分析、成本计算题如何学?1、PV,EV,AC需要理解,根据题目给出的一些个条件需要求得这些值;2、CV,SV,CPI,SPI公式必须记住,需要根据求得的值判断项目的进度和成本的执行情况&#x…...
力扣-236.二叉树的最近公共祖先
题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以…...
Go 中闭包的常见使用场景
在 Go 中,闭包(Closure) 是一个函数值,它引用了其定义时所在作用域中的变量。也就是说,闭包可以访问并修改外部作用域中的变量。 Go 中闭包的常见使用场景 ✅ 1. 封装状态(无须结构体) 闭包可…...

SpringBoot中的Lombok库
一)Lombok库简介 Lombok是一个Java库,通过注解的方式简化代码编写,减少样板代码。它能够自动生成getter、setter、构造函数、toString等方法,提升开发效率。Lombok只是一个编译阶段的库,因此不会影响程序的运行。 二…...
《Java 大视界——Java 大数据在智能电网分布式能源协同调度中的应用与挑战》
随着风电、光伏等分布式能源大规模接入电网,传统调度系统面临数据规模激增、响应延迟显著、多源异构数据融合困难等核心问题。本文聚焦Java生态下的大数据技术体系,深入探讨其在智能电网实时监测、负荷预测、资源优化配置等场景中的落地实践。通过分析Sp…...

AI中的MCP是什么?MCP的作用及未来方向预测 (使用go-zero 快速搭建MCP服务器)
AI是当下最热的风。在当今AI技术飞速发展的时代,AI的应用已经渗透到我们日常生活的方方面面。然而,随着AI系统的复杂性不断增加,如何让AI具备更强的自主性和灵活性成为了业界关注的焦点。这就引出了Model Context Protocol(MCP&am…...

mac安装cast
背景 pycharm本地运行脚本时提示cast没有安装 问题原因 脚本尝试调用cast命令(以太坊开发工具foundry中的子命令),但您的系统未安装该工具。 从日志可见,错误发生在通过sysutil.py执行shell命令时。 解决方案 方法1…...
conda更换清华源
1、概览 anaconda更换速度更快、更稳定的下载源,在linux环境测试通过。 2、conda源查看 在修改之前可以查看下现有conda源是什么,查看conda配置信息,如下: cat ~/.condarc 可以看到你的conda源,以我的conda源举例&am…...
[原创](现代Delphi 12指南):[macOS 64bit App开发]: 注意“回车换行“的跨平台使用.
[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…...
管理Oracle Data Guard的最佳实践
Oracle Data Guard的中文名字叫数据卫士,顾名思义,它是生产库的一道保障。所以管理Data Guard是DBA的一项重要工作之一,管理Data Guard时主要有以下几个注意点需要引起重视。 备份库的归档日志积压 一般情况下,生产库的归档日志是…...

一个简单点的js的h5页面实现地铁快跑的小游戏
以下是一个简化版的"地铁快跑"小游戏H5页面实现。这个游戏包含基本的角色跳跃、障碍物生成和计分系统,使用Canvas绘图技术实现。 完整源码 登录后复制 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-…...
作业帮Java后台开发面试题及参考答案(下)
final、finally、finalize 的区别是什么? final、finally和finalize是 Java 中三个功能完全不同的关键字,容易混淆,需从作用域、语法规则和实际用途等方面深入区分。 final的作用 final用于修饰类、方法和变量,体现 “不可变” 特性: 修饰类:表示该类不能被继承,例如 J…...

Hugging Face 中 LeRobot 使用的入门指南
相关源文件 .github/ISSUE_TEMPLATE/bug-report.yml .github/PULL_REQUEST_TEMPLATE.md README.md examples/1_load_lerobot_dataset.py examples/2_evaluate_pretrained_policy.py examples/3_train_policy.py lerobot/scripts/eval.py lerobot/scripts/train.py 本页面提供 …...

零基础入门Hadoop:IntelliJ IDEA远程连接服务器中Hadoop运行WordCount
今天我们来聊一聊大数据,作为一个Hadoop的新手,我也并不敢深入探讨复杂的底层原理。因此,这篇文章的重点更多是从实际操作和入门实践的角度出发,带领大家一起了解大数据应用的基本过程。我们将通过一个经典的案例——WordCounter&…...

HTML-3.3 表格布局(学校官网简易布局实例)
本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。 系列文章目录 HTML-1.1 文本字体样式-字体设置、分割线、段落标签、段内回车以及特殊符号 HTML…...
Maven构建流程详解:如何正确管理微服务间的依赖关系-当依赖的模块更新后,我应该如何重新构建主项目
文章目录 一、前言二、Maven 常用命令一览三、典型场景说明四、正确的构建顺序正确做法是: 五、为什么不能只在 A 里执行 clean install?六、进阶推荐:使用多模块项目(Multi-module Project)七、总结 一、前言 在现代…...

遗传算法求解旅行商问题分析
目录 一、问题分析 二、实现步骤 1)初始化种群 2)计算适应度 3)选择操作 4)交叉操作 5)变异操作 三、求解结果 四、总结 本文通过一个经典的旅行商问题,详细阐述在实际问题中如何运用遗传算法来进…...
【hot100-动态规划-300.最长递增子序列】
力扣300.最长递增子序列思路解析 本题要求在一个整数数组 nums 中,找到最长严格递增子序列的长度。子序列是指从原数组中派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 动态规划思路 定义状态:…...
PostgreSQL malformed array literal异常
现象 在一个存储过程中编写如下代码(省略与本异常无关的代码): declare hbsn_arr varchar(240)[]; #bddm.hbsn 内容类似于{"chain0":["NULL"],"chain1":["FESDF09402342","NULL"],...} …...

打造网络安全堡垒,企业如何应对DDoS、CC、XSS和ARP攻击
网站已经成为企业展示形象、开展业务和实现线上营销的重要平台。然而,随着网络攻击手段的不断升级,DDoS、CC、XSS、ARP等攻击频频出现,严重威胁到企业的信息安全和业务稳定。本文将详细阐述网站被攻击后应采取的应急措施及预防策略࿰…...
Oracle统计信息收集时的锁持有阶段
Oracle统计信息收集时的锁持有阶段 1 准备阶段(共享模式锁) 锁类型:对象级共享锁(S锁) 持续时间:通常1-5秒 主要操作: 验证对象存在性和权限检查统计信息首选项设置确定采样方法和并行度 监…...

深度解析物理机服务器故障修复时间:影响因素与优化策略
一、物理机故障修复的核心影响因素 物理机作为企业 IT 基础设施的核心载体,其故障修复效率直接关系到业务连续性。故障修复时间(MTTR)受多重因素交叉影响: 1. 故障类型的复杂性 硬件级故障: 简单故障:内存…...

印度全印度游戏联合会(AIGF)介绍与用途
本文为印度AIGF的介绍科普文,自去年开始,印度Rummy类游戏申请印度支付都需要拥有AIGF的会员及产品证书。 如需要rummy可以通过AIGF审核的源。码,或咨询AIGF的相关内容,可以联。系老妙。 全印度游戏联合会(All India G…...

可视化数据图表怎么做?如何实现三维数据可视化?
目录 一、三维数据可视化的要点 1. 明确数据可视化的目标 2. 筛选与整理数据 3. 选择合适的图表类型 4. 运用专业工具制作 5. 优化图表的展示效果 二、数据可视化图表怎么做? 1. 理解三维数据的特性 2. 数据处理与三维建模 3. 设置光照与材质效果 4. 添加…...
什么是模态内异质性,什么是模态间异质性?
首先,理解一下“模态”(Modality)和“异质性”(Heterogeneity)。 模态:你可以简单理解为不同种类或形式的信息。比如: 文字(文本)是一种模态。图片(图像&…...

视频分辨率增强与自动补帧
一、视频分辨率增强 1.传统分辨率增强方法 传统的视频分辨率增强方法主要基于插值技术。这些方法通过对低分辨率视频帧中已知像素点的分布规律和相邻像素之间的相关性进行分析,在两者之间插入新的像素点以达到增加视频分辨率的目的。例如,最近邻插值算…...

【SPIN】用Promela验证顺序程序:从断言到SPIN实战(SPIN学习系列--2)
你写了一段自认为“天衣无缝”的程序,但如何确保它真的没有bug?靠手动测试?可能漏掉边界情况;靠直觉?更不靠谱!这时候,Promela SPIN组合就像程序的“显微镜”——用形式化验证技术,…...

降本增效双突破:Profinet转Modbus TCP助力包布机产能与稳定性双提升
在现代工业自动化领域,ModbusTCP和Profinet是两种常见的通讯协议。它们在数据传输、设备控制等方面有着重要作用。然而,由于这两种协议的工作原理和应用环境存在差异,直接互联往往会出现兼容性问题。此时,就需要一种能够实现Profi…...

JESD204 ip核使用与例程分析(一)
JESD204 ip核使用与例程分析(一) JESD204理解JESD204 与JESD204 PHY成对使用原因JESD204B IP核JESD204B IP核特点JESD204B IP核配置第一页第二页第三页第四页JESD204 PHY IP核配置第一页第二页JESD204理解 JESD204B是一种针对ADC、DAC设计的传输接口协议。此协议包含四层, …...