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.mzph.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,…