当前位置: 首页 > news >正文

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.xdnf.cn/news/64153.html

相关文章:

  • 基于LLM的响应式流式处理实践:提升用户体验的关键技术
  • 【python】copy deepcopy 赋值= 对比
  • el-input 限制只能输入非负数字和小数
  • 基于SIMMECHANICS的单自由度磁悬浮隔振器PID控制系统simulink建模与仿真
  • linux基础学习--linux文件与目录管理
  • 【python实用小脚本系列】用Python打造你的专属智能语音助手
  • 【技术派后端篇】技术派中基于 Redis 的缓存实践
  • 快手砍掉本地生活的门槛
  • Redis的使用总结
  • 电脑硬盘常见的几种接口类型
  • 方案精读:2024 华为数字政府智慧政务一网统管解决方案【附全文阅读】
  • Flowable7.x学习笔记(十)分页查询已部署 BPMN XML 流程
  • 博奥龙全系方案护航科研命脉
  • 让数据应用更简单:Streamlit与Gradio的比较与联系
  • AI音乐解决方案:1分钟可切换suno、udio、luno、kuka等多种模型,suno风控秒切换 | AI Music API
  • 基于瑞芯微RK3576国产ARM八核2.2GHz A72 工业评估板——ROS2系统使用说明
  • IDEA/WebStorm中Git操作缓慢的解决方案
  • OSPF --- LSA
  • elasticsearch7.15节点磁盘空间满了迁移数据到新磁盘
  • LangChain与图数据库Neo4j LLMGraphTransformer融合:医疗辅助诊断、金融风控领域垂直领域、法律咨询场景问答系统的技术实践
  • WebRTC通信技术EasyRTC音视频实时通话安全巡检搭建低延迟、高可靠的智能巡检新体系
  • docker学习笔记2-最佳实践
  • 腾讯一面-软件开发实习-PC客户端开发方向
  • 龙虎榜——20250421
  • 【前端样式】用 aspect-ratio 实现等比容器:视频封面与图片占位的终极解决方案
  • 基于超启发鲸鱼优化算法的混合神经网络多输入单输出回归预测模型 HHWOA-CNN-LSTM-Attention
  • 计算机组成与体系结构:内存层次结构(Memory Hierarchy)
  • # 04_Elastic Stack 从入门到实践(四)--3
  • 项目班——0419——functionbind生产消费(未完成)
  • 七、专家系统