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;

五、重要注意事項

  1. 權限控制

    • 普通用戶只能修改user上下文的參數
    • 超級用戶可修改所有非internal參數
  2. 作用范圍

    • 使用set_config的修改默認僅影響當前會話
    • 持久化修改需要使用ALTER SYSTEM或直接編輯postgresql.conf
  3. 性能影響

    • 某些參數修改可能導致性能波動(如work_mem)
    • 生產環境修改前應在測試環境驗證
  4. 參數相關性

    -- 查詢相關參數組
    SELECT name, category, short_desc 
    FROM pg_settings 
    WHERE category LIKE '%Memory%'
    ORDER BY category, name;
    
  5. 版本差異

    • 不同PostgreSQL版本可用參數可能不同
    • 參數默認值可能隨版本變化

通過合理使用這些配置函數,DBA可以靈活優化數據庫性能,適應不同的工作負載需求,而無需頻繁重啟數據庫服務。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83029.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83029.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83029.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

sql server 2019 將單用戶狀態修改為多用戶狀態

記錄兩種將單用戶狀態修改為多用戶狀態,我曾經成功過的方法,供參考 第一種方法 USE master; GO -- 終止所有活動連接 DECLARE kill_connections NVARCHAR(MAX) ; SELECT kill_connections KILL CAST(session_id AS NVARCHAR(10)) ; FROM sys.dm_ex…

主機A向主機B發送一個長度為L字節的文件,假設TCP的MSS為1460字節,則在TCP的序號不重復使用的前提下,L的最大值是多少?

📘題干回顧: 主機A向主機B發送一個長度為L字節的文件,假設TCP的MSS為1460字節,則在TCP的序號不重復使用的前提下,L的最大值是多少? 這個問題關鍵在于“TCP序號不重復使用”。 ? 正確答案是:D.…

一次因校時服務器異常引起的性能差異分析

一次因校時服務器異常引起的性能差異分析 一.背景知識1. **TSC 頻率**:硬件級高精度計時2. **gettimeofday**:用戶態時間接口3. **adjtimex**:系統時鐘的軟件校準4. **`clock_adjtime(CLOCK_REALTIME, {modes=ADJ_TICK})`**: 用于修改系統時鐘中斷間隔(`tick` 值)。5. 關系…

acwing 4275. Dijkstra序列

題目背景 輸入 輸出 完整代碼 #include<bits/stdc.h> using namespace std; int n,m,k,a[1010],dist[1010],g[1010][1010],st[1010];int dij(int u){memset(st,0,sizeof st);memset(dist,0x3f,sizeof dist);dist[u]0;for(int i0;i<n;i){int ta[i];for(int j1;j<n;…

[思維模式-37]:什么是事?什么是物?什么事物?如何通過數學的方法闡述事物?

一、基本概念 1、事&#xff08;Event) “事”通常指的是人類在社會生活中的各種活動、行為、事件或情況&#xff0c;具有動態性和過程性&#xff0c;強調的是一種變化、發展或相互作用的流程。 特點 動態性&#xff1a;“事”往往涉及一系列的動作、變化和發展過程。例如&a…

Linux常用命令40——alias設置命令別名

在使用Linux或macOS日常開發中&#xff0c;熟悉一些基本的命令有助于提高工作效率&#xff0c;alias命令來自英文單詞alias&#xff0c;中文譯為“別名”&#xff0c;其功能是設置命令別名信息。我們可以使用alias將一些較長的命令進行簡寫&#xff0c;往往幾十個字符的命令會變…

310. 最小高度樹

題目 樹是一個無向圖&#xff0c;其中任何兩個頂點只通過一條路徑連接。 換句話說&#xff0c;任何一個沒有簡單環路的連通圖都是一棵樹。 給你一棵包含 n 個節點的樹&#xff0c;標記為 0 到 n - 1 。給定數字 n 和一個有 n - 1 條無向邊的 edges 列表&#xff08;每一個邊都…

Axure 縱向滾動隱藏滾動條 Axure 滑動開關(屬性開關)on-off

文章目錄 I 滑動開關(屬性開關)操作說明block 矩形操作說明round小圓圈操作說明on-off 屬性開關組合操作說明II Axure 縱向滾動隱藏滾動條思路包含圖片的動態面板1操作說明包含動態面板的頂級動態面板I 滑動開關(屬性開關)操作說明 block 矩形操作說明 在畫布中添加一個矩形…

MySQL之基礎事務

目錄 引言&#xff1a; 什么是事務&#xff1f; 事務和鎖 mysql數據庫控制臺事務的幾個重要操作指令&#xff08;transaction.sql&#xff09; 1、事物操作示意圖&#xff1a; 2.事務的隔離級別 四種隔離級別&#xff1a; 總結一下隔離指令 1. 查看當前隔離級別?? …

VS Code 重磅更新:全新 MCP 服務器發現中心上線

目前各種 MCP 客戶端層出不窮&#xff0c;但是安裝 MCP 服務卻格外繁瑣&#xff0c;尤其 VS Code 中無界面化的 MCP 服務配置方式&#xff0c;效率較低。 Copilot MCP 是一個 VS Code 插件&#xff0c;在今天發布的新版本中&#xff0c;插件支持了自動發現與安裝開源 MCP 服務…

智能家居“心臟“升級戰:GD25Q127CSIG國產芯片如何重構家庭物聯生態

在智能家居設備出貨量突破10億臺的2023年&#xff0c;家庭網關正經歷著前所未有的技術革新。作為連接云端與終端設備的中樞神經&#xff0c;智能網關的存儲芯片選擇直接決定著整個智能生態系統的運行效率。在這場技術升級浪潮中&#xff0c;兆易創新GD25Q127CSIG串行閃存芯片主…

R語言機器學習算法實戰系列(二十五)隨機森林算法多標簽分組分類器及模型可解釋性

禁止商業或二改轉載,僅供自學使用,侵權必究,如需截取部分內容請后臺聯系作者! 文章目錄 介紹教程內容加載必要的R包(帶詳細注釋)1. 加載數據2. 數據分割(按Species分層抽樣)3. 數據預處理配方4. 創建隨機森林模型(多分類)5. 創建工作流6. 設置交叉驗證和參數調優7. 參…

速查 Linux 常用指令 II

目錄 一、網絡管理命令1. 查看和配置網絡設備&#xff1a;ifconfig1&#xff09;重啟網絡命令2&#xff09;重啟網卡命令 2. 查看與設置路由&#xff1a;route3. 追蹤網絡路由&#xff1a;traceroute4. 查看端口信息和使用情況1&#xff09;netstat 命令2&#xff09;lsof 命令…

關于github使用總結

文章目錄 一、本地使用git&#xff08;一&#xff09;創建一個新的本地Git庫首先在本地創建一個新的git倉庫然后進行一次初始提交提交過后就可以查看提交記錄 &#xff08;二&#xff09;在本地倉庫進行版本恢復先執行 git log 查看項目提交歷史使用 git checkout 恢復版本 二、…

【Python】Python 單例模式 8 大核心應用場景深度解析(2025 新版)

單例模式&#xff08;Singleton Pattern&#xff09;作為一種經典的設計模式&#xff0c;始終保持著重要的工程價值。 本文著重于單例模式的主要核心應用場景。 至于實現方法&#xff0c; 晚些時候發出。 一、配置管理器 全局配置信息管理是單例模式最典型的應用場景。通過單…

計算機網絡網絡層(下)

一、互聯的路由選擇協議&#xff08;網絡層控制層面內容&#xff09; &#xff08;一&#xff09;有關路由選擇協議的幾個概念 1.理想的路由算法 &#xff08;1&#xff09;理想路由算法應具備的特點&#xff1a;算法必須正確和完整的&#xff0c;算法在計算上應簡單&#x…

云存儲桶的“公開陷阱”|滲透測試中如何利用與防御配置錯誤的存儲服務

引言 云存儲服務&#xff08;如AWS S3、阿里云OSS、Google Cloud Storage&#xff09;因便捷性被企業廣泛使用&#xff0c;但權限配置錯誤卻成為近年來數據泄露的重災區。 攻擊者無需復雜漏洞&#xff0c;僅需一個公開鏈接即可下載敏感數據。本文將深入解析這類漏洞的滲透…

BitMart合約交易體驗 BitMart滑點全賠的底層邏輯

美國新澤西州澤西市&#xff0c;2025年5月13日 – BitMart&#xff0c;全球領先的數字資產交易平臺&#xff0c;推出了其開創性的滑點保護計劃&#xff0c;旨在解決加密市場中最具挑戰性且常常被忽視的風險之一&#xff1a;滑點。該計劃為交易者提供了在 USDT 保證金永續合約交…

高海拔和遠距離的人員識別:面部、體型和步態的融合

大家讀完就覺得有幫助記得關注和點贊&#xff01;&#xff01;&#xff01; 摘要 我們解決了在無約束環境中進行全身人體識別的問題。這個問題出現在諸如IARPA高空和遠距離生物識別與身份識別&#xff08;BRIAR&#xff09;計劃等監視場景中&#xff0c;其中生物識別數據是在長…

Docker 常見問題及其解決方案

一、安裝與啟動問題 1.1 安裝失敗 在不同操作系統上安裝 Docker 時&#xff0c;可能會出現安裝失敗的情況。例如&#xff0c;在 Ubuntu 系統中&#xff0c;執行安裝命令后提示依賴缺失。這通常是因為軟件源配置不正確或系統缺少必要的依賴包。 解決方案&#xff1a; 確保系統…