PostgreSQL 用戶資源管理

PostgreSQL 用戶資源管理

PostgreSQL 提供了多種機制來管理和限制用戶對數據庫資源的使用,以下是全面的資源管理方法:

1 連接限制

1.1 限制最大連接數

-- 在 postgresql.conf 中設置
max_connections = 100  -- 全局最大連接數-- 為特定用戶設置連接限制
ALTER ROLE username CONNECTION LIMIT 10;

1.2 空閑連接超時

-- 設置空閑連接自動斷開時間(秒)
ALTER SYSTEM SET idle_in_transaction_session_timeout = '300s';

2 查詢資源限制

2.1 基本查詢限制

-- 設置語句超時(毫秒)
ALTER ROLE username SET statement_timeout = '60s';-- 設置鎖等待超時
ALTER ROLE username SET lock_timeout = '5s';

2.2 高級資源控制 (pg_stat_statements)

-- 啟用擴展
CREATE EXTENSION pg_stat_statements;-- 查看資源消耗最多的查詢
SELECT query, calls, total_time, rows
FROM pg_stat_statements
ORDER BY total_time DESC
LIMIT 10;

3 內存控制

3.1 工作內存限制

-- 設置每個操作的內存限制
ALTER ROLE username SET work_mem = '16MB';-- 設置維護操作的內存限制
ALTER ROLE username SET maintenance_work_mem = '256MB';

3.2 共享緩沖區

-- 在 postgresql.conf 中設置
shared_buffers = 4GB  -- 通常設為系統內存的25%

4 磁盤空間配額

4.1 表空間配額

-- 創建專用表空間
CREATE TABLESPACE user_space OWNER username LOCATION '/path/to/data';-- 設置配額
ALTER USER username SET default_tablespace = 'user_space';

4.2 數據庫大小監控

-- 查看用戶擁有的數據庫對象大小
SELECT pg_size_pretty(pg_total_relation_size(relid)) as size, relname as table
FROM pg_catalog.pg_statio_user_tables
WHERE schemaname = 'public'
ORDER BY pg_total_relation_size(relid) DESC;

5 使用資源組 (PostgreSQL 12+)

-- 創建資源組
CREATE RESOURCE GROUP user_groupWITH (cpu_rate_limit=30, memory_limit=30);-- 將用戶分配到資源組
ALTER ROLE username SET resource_group = 'user_group';

6 基于擴展的精細控制

6.1 pg_qualstats 監控謂詞使用

CREATE EXTENSION pg_qualstats;-- 查看最常使用的謂詞
SELECT * FROM pg_qualstats ORDER BY execution_count DESC;

6.2 pg_hint_plan 控制執行計劃

-- 強制使用特定索引
/*+ IndexScan(table_name index_name) */
SELECT * FROM table_name WHERE condition;

7 審計與監控

7.1 啟用審計日志

-- 在 postgresql.conf 中設置
log_statement = 'all'  -- 記錄所有語句
log_duration = on
log_line_prefix = '%m [%p] %u@%d '

7.2 使用 pgBadger 分析日志

pgbadger /var/log/postgresql/postgresql-*.log -o report.html

8 最佳實踐建議

  1. 分層管理

    • 為不同業務創建不同用戶
    • 按業務重要性分配資源
  2. 定期審查

    -- 查看用戶資源設置
    SELECT rolname, rolconnlimit, rolconfig 
    FROM pg_roles 
    WHERE rolconfig IS NOT NULL;
    
  3. 自動化監控

    • 設置警報閾值
    • 使用 Prometheus + Grafana 監控
  4. 資源隔離

    • 重要業務使用專用實例
    • 使用連接池管理連接
  5. 文檔記錄

    • 記錄資源分配策略
    • 維護變更日志

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

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

相關文章

新書速覽|OpenCV計算機視覺開發實踐:基于Qt C++

《OpenCV計算機視覺開發實踐:基于Qt C》 本書內容 OpenCV是計算機視覺領域的開發者必須掌握的技術。《OpenCV計算機視覺開發實踐:基于Qt C》基于 OpenCV 4.10與Qt C進行編寫,全面系統地介紹OpenCV的使用及實戰案例,并配套提供全書示例源碼、PPT課件與作…

【上位機——MFC】消息映射機制

消息映射機制 Window消息分類消息映射機制的使用代碼示例 MFC框架利用消息映射機制把消息、命令與它們的處理函數映射起來。具體實現方法是在每個能接收和處理消息的類中,定義一個消息和消息函數指針對照表,即消息映射表。 在不重寫WindowProc虛函數的大…

docker學習筆記2-最佳實踐

一、在容器中啟動mysql的最佳實踐 (一)查找目錄 1、mysql的配置文件路徑 /etc/mysql/conf.d 2、mysql的數據目錄 /var/lib/mysql 3、環境變量 4、端口 mysql的默認端口3306。 (二)啟動命令 docker run -d -p 3306:3306 …

Vue3核心源碼解析

/packages/complier-core 定位??:??編譯時核心??,處理 Vue 模板的編譯邏輯。??核心功能??: ??模板解析??:將 .vue 文件的模板語法(HTML-like)解析為 ??抽象語法樹 (AST)??。??轉換優化…

n8n 中文系列教程_05.如何在本機部署/安裝 n8n(詳細圖文教程)

n8n 是一款強大的開源工作流自動化工具,可幫助你連接各類應用與服務,實現自動化任務。如果你想快速體驗 n8n 的功能,本機部署是最簡單的方式。本教程將手把手指導你在 Windows 或 MacOS 上通過 Docker 輕松安裝和運行 n8n,無需服務…

【python】pyCharm常用快捷鍵使用-(2)

pyCharm常用快捷鍵使用 快速導入任意類 【CTRLALTSPACE】代碼補全【CTRLSHIFTENTER】代碼快速修正【ALTENTER】代碼調試快捷鍵

Docker 鏡像、容器和 Docker Compose的區別

前言:Docker 的鏡像、容器和 Docker Compose 是容器化技術的核心組件,以下是對它們的詳細解析及使用場景說明。 ??1、Docker 鏡像(Image)?? ??定義??: 鏡像是只讀模板,包含運行應用程序所需的代碼、…

算法——背包問題(分類)

背包問題(Knapsack Problem)是一類經典的組合優化問題,廣泛應用于資源分配、投資決策、貨物裝載等領域。根據約束條件和問題設定的不同,背包問題主要分為以下幾種類型: 1. 0-1 背包問題(0-1 Knapsack Probl…

多路由器通過RIP動態路由實現通訊(單臂路由)

多路由器通過RIP動態路由實現通訊(單臂路由) R1(開啟端口并配置IP) Router>en Router#conf t Router(config)#int g0/0 Router(config-if)#no shu Router(config-if)#no shutdown Router(config-if)#ip add 192.168.10.254 255.255.255.0 Router(c…

從底層設計原理分析并理解SQL 的執行順序

?一、執行順序的底層設計原理?? ??1. 數據源的確定與連接(FROM → ON → JOIN)?? ??FROM??:數據庫首先需要確定數據的物理來源,從磁盤加載表或子查詢的原始數據。此時尚未應用任何篩選,僅讀取元數據&#…

游戲引擎學習第237天:使用 OpenGL 顯示圖像

win32_game.cpp: 禁用 PFD_DOUBLEBUFFER 我們正在處理一個新的開發階段,目標是在使用 OpenGL 渲染的同時能正常通過 OBS 進行直播。昨天我們已經嘗試了一整天來解決這個問題,希望能找到一種方式讓 OBS 能正確地捕捉到 OpenGL 的窗口畫面。雖然我們不確定…

(二)mac中Grafana監控Linux上的MySQL(Mysqld_exporter)

框架:GrafanaPrometheusMysqld_exporter 一、監控查看端安裝 Grafana安裝-CSDN博客 普羅米修斯Prometheus監控安裝(mac)-CSDN博客 1.啟動Grafana服務 brew services start grafana 打開瀏覽器輸入http://localhost:3000進入grafana登錄…

GitHub 趨勢日報 (2025年04月17日)

本日報由 TrendForge 系統生成 https://trendforge.devlive.org/ 📈 今日整體趨勢 Top 10 排名項目名稱項目描述今日獲星總星數語言1Anduin2017/HowToCook程序員在家做飯方法指南。Programmer’s guide about how to cook at home (Simplified Chinese onl…? 224…

(一)mac中Grafana監控Linux上的CPU等(Node_exporter 安裝使用)

框架:GrafanaPrometheusNode_exporter 機器狀態監控(監控服務器CPU,硬盤,網絡等狀態) Node_exporter安裝在被測服務器上,啟動服務 各步驟的IP地址要換為被測服務器的IP地址Prometheus.yml的 targets值網頁訪問的ip部分grafana添加數據源的…

java IO/NIO/AIO

(?▽?)曼波~~~~!讓曼波用最可愛的賽馬娘方式給你講解吧!(? ???ω??? ?) 🎠曼波思維導圖大沖刺(先看框架再看細節哦): 📚 解釋 Java 中 IO、NIO、AIO 的區別和適用場景: …

Silverlight發展歷程(微軟2021年已經停止支持Silverlight 5)

文章目錄 Microsoft Silverlight 發展歷程引言起源與背景(2006-2007)互聯網技術格局與微軟的挑戰WPF/E 項目的啟動 Silverlight 1.0 的誕生(2007)正式命名與首次發布初步的市場定位 Silverlight 2.0:真正的突破&#x…

【大數據、數據開發與數據分析面試題匯總(含答案)】

在大數據、數據開發與數據分析領域的面試中,扎實掌握各類知識點至關重要。以下是精心整理的面試題,涵蓋單選題和多選題,助你備考一臂之力。 試題目錄 大數據、數據開發與數據分析高頻面試題解析1. 數據倉庫分層架構設計2. 維度建模與范式建模…

Docker部署禪道21.6開源版本

將數據庫相關環境變量分開,增加注釋或空格使得命令更易讀。 如果你的 MySQL 主機、端口等配置沒有變化,應該確保這些信息是安全的,并考慮使用 Docker secrets 或環境變量配置來避免直接暴露敏感信息。 docker run -d -it --privilegedtrue …

Yocto項目實戰教程 · 第4章:4.2小節-菜譜

🔍 B站相應的視頻教程: 📌 Yocto項目實戰教程-第4章-4.2小節-菜譜 記得三連,標為原始粉絲。 在 Yocto 項目中,**菜譜(Recipe)**承載了包的配置信息、源碼獲取方式、編譯與安裝步驟,是…

【pytorch】torch.nn.Unfold操作

說明 一個代碼里涉及到了unfold的操作,看了半天官網都沒整明白維度怎么變化的,參考這個鏈接搞明白了: https://blog.csdn.net/ViatorSun/article/details/119940759 https://zhuanlan.zhihu.com/p/361140988 維度計算 輸入( N,…