如何充分利用 Postgres 的内存设置

为了充分利用 PostgreSQL 的内存设置,你需要调整多个参数以优化数据库性能。这些参数包括共享缓冲区(shared_buffers)、工作内存(work_mem)、维护工作内存(maintenance_work_mem)、有效缓存大小(effective_cache_size)等。以下是一些关键步骤和建议:
#PG培训#PG考试#postgresql培训#postgresql考试#postgresql认证
在这里插入图片描述

共享缓冲区 (shared_buffers)

  • 描述: 这是 PostgreSQL 使用的共享内存缓冲区的大小。
  • 设置: 通常设置为服务器物理内存的 25%-40%。
shared_buffers = 8GB

工作内存 (work_mem)

  • 描述: 这是用于排序操作和哈希表等操作的内存。每个连接和每个操作都会使用此内存。
  • 设置: 通常设置为 16MB 到 256MB,但具体值取决于并发连接数和查询的复杂性。
work_mem = 64MB

维护工作内存 (maintenance_work_mem)

  • 描述: 这是用于维护操作(如创建索引、VACUUM 和 ANALYZE)的内存。
  • 设置: 应比 work_mem 大,可以设置为 512MB 到数 GB。
maintenance_work_mem = 2GB

有效缓存大小 (effective_cache_size)

  • 描述: 这是操作系统文件系统缓存大小的一个估计值,PostgreSQL 使用它来决定查询计划。
  • 设置: 通常设置为服务器物理内存的 50%-75%。
effective_cache_size = 24GB

临时文件缓冲区 (temp_buffers)

  • 描述: 这是会话级别的临时缓冲区大小。
  • 设置: 通常设置为 8MB 到 64MB。
temp_buffers = 64MB

WAL 缓冲区 (wal_buffers)

  • 描述: 这是用于写前日志(WAL)的缓冲区大小。
  • 设置: 对于大多数应用,16MB 是一个合理的默认值。
wal_buffers = 16MB

其他注意事项

  • 连接数: 调整 max_connections 和 max_worker_processes 来匹配服务器的能力。
max_connections = 200
max_worker_processes = 16
  • 自动化工具: 使用工具如 pg_tune 或 PGConfig 来生成推荐的配置。

示例配置

shared_buffers = 8GB
work_mem = 64MB
maintenance_work_mem = 2GB
effective_cache_size = 24GB
temp_buffers = 64MB
wal_buffers = 16MB
max_connections = 200
max_worker_processes = 16

调整方法

  • 编辑 PostgreSQL 配置文件: 通常是 postgresql.conf。
  • 重启 PostgreSQL: 使更改生效。
sudo service postgresql restart

性能监控

  • pg_stat_activity: 监控当前活动。
  • pg_stat_statements: 捕捉查询统计信息。
  • EXPLAIN 和 EXPLAIN ANALYZE: 分析查询计划。

结论

通过仔细调整这些内存设置,可以显著提高 PostgreSQL 的性能。记住每次调整后都要监控系统表现,确保更改产生预期效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/714506.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

命令词:引导行动的语言工具

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

《全职猎人》

《全职猎人》 [1-2]是日本漫画家富坚义博的作品。 1999年版改编电视动画由日本动画公司负责动画制作,于1999年10月16日-2001年3月30日在富士电视台播出,该动画的故事至贪婪之岛篇章结束,全92话。 该作在富坚义博老师天马行空的想…

markupsafe,一个神奇的 Python 库!

更多Python学习内容:ipengtao.com 大家好,今天为大家分享一个神奇的 Python 库 - markupsafe。 Github地址:https://github.com/pallets/markupsafe 在 Web 开发和模版渲染中,处理用户输入的数据时,防止 HTML 注入是至…

【Java】Object、Objects、包装类、StringBuilder、StringJoiner

目录 1.API2.Object类3.Objects类4.包装类4.1包装类概述4.2包装类的其他常见操作 5.StringBuilder 可变字符串5.1概述5.2StringBuilder案例 6.StringJoiner 1.API API:应用程序编程接口,全称application programing interface,即Java已经写好…

3分钟带手把手带你了解 FL Studio v21.2.3.4004 中文免费版(附中文设置教程)安装指南

3分钟带手把手带你了解 FL Studio v21.2.3.4004 中文免费版(附中文设置教程)安装指南,大家我是兔八哥爱分享,今天你带来的安装FL Studio 21破解版,纯正简体中文支持! FL Studio 21 简称FL21,全称Fruity Loops Studio&a…

消息队列-Rabbit运行机制

Producer(生产者) 和 Consumer(消费者) Producer(生产者) :生产消息的一方(邮件投递者)Consumer(消费者) :消费消息的一方(邮件收件人) 消息一般由 2 部分组成:消息头(或者说是标签 Label)和 …

keystone认证服务

keystone认证服务 1、keystone管理用户 1-1、简介: 在OpenStack云计算平台中,Keystone是一个核心组件,主要用于提供统一的认证服务。其功能包括: 身份验证:Keystone负责验证用户的身份,通常通过用户名和…

记录一个flink跑kafka connector遇到的问题

【报错】 D:\Java\jdk1.8.0_231\bin\java.exe "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\lib\idea_rt.jar56647:D:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\bin" -Dfile.encodingUTF-8 -classpath D:\Java\jdk1.8.0_231\jre\lib\cha…

本学期嵌入式期末考试的综合项目,我是这么出题的

时间过得真快,临近期末,又到了老师出卷的时候。作为《嵌入式开发及应用》这门课的主讲教师,今年给学生出的题目有一点点难度,最后的综合项目要求如下所示,各位学生朋友和教师同行可以评论一下难度如何,单片…

DataWhale - 吃瓜教程学习笔记(一)

学习视频:第1章-绪论_哔哩哔哩_bilibili 西瓜书对应章节: 第一章 机器学习三观 What:什么是机器学习? 关键词:“学习算法” Why: 为什么要学机器学习? #### 1. 机器学习理论研究#### 2. 机器学习系统开…

[240615] X-CMD 发布 v0.3.11,增加对 elvish 的支持

目录 X-CMD 发布 v0.3.11,增加对 elvish 的支持,并优化对 nushell,fish,xonsh,tcsh 的支持✨ co 模块 - copilot✨ elv 模块✨ hub X-CMD 发布 v0.3.11,增加对 elvish 的支持,并优化对 nushell&…

Python合并文件(dat、mdf、mf4)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

LabVIEW与C#的区别及重新开发自动测试程序的可行性分析

LabVIEW和C#是两种广泛使用的编程语言,各自有不同的应用领域和特点。本文将详细比较LabVIEW与C#在自动测试程序开发中的区别,并分析将已完成的LabVIEW自动测试程序重新用C#开发的合理性。本文帮助评估这种转换的必要性和潜在影响。 LabVIEW与C#的区别 开…

怎么把三列数据相同的号码一起求和?

可以使用excel的合并计算功能。 一、合并计算 将三列求和的数字列标题改成相同的,示例中全改成B1,这个是使用合并计算的关键一步,不改列标题,计算结果会是分开的。 2. 然后选中任意空白单元格作为输入结果的起始位置,…

Python学习笔记11:入门终结篇

前言 入门知识到这里基本结束了,这里主要讲一下input和range。这两个讲完,讲讲后面进阶学些啥。 range函数 之前将循环的时候讲过一点,这个函数是Python内置的函数,主要用来生成一系列数字,简单方便。 这里重新&…

Java17 --- SpringSecurity之前后端分离处理

目录 一、实现前后端分离 1.1、导入pom依赖 1.2、认证成功处理 1.3、认证失败处理 1.4、用户注销处理 1.5、请求未认证处理 1.6、跨域处理 1.7、用户认证信息处理 1.8、会话并发处理 一、实现前后端分离 1.1、导入pom依赖 <dependency><groupId>co…

工程设计问题---多盘离合器制动器设计问题

这个问题的主要目的是使多片式离合器制动器的质量最小化。在这个问题中&#xff0c;使用了五个整数决策变量&#xff0c;它们是内半径&#xff08;x1&#xff09;、外半径&#xff08;x2&#xff09;、盘厚度&#xff08;x3&#xff09;、致动器的力&#xff08;x4&#xff09;…

QT属性系统,简单属性功能快速实现 QT属性的简单理解 属性学习如此简单 一文就能读懂QT属性 QT属性最简单的学习

4.4 属性系统 Qt 元对象系统最主要的功能是实现信号和槽机制&#xff0c;当然也有其他功能&#xff0c;就是支持属性系统。有些高级语言通过编译器的 __property 或者 [property] 等关键字实现属性系统&#xff0c;用于提供对成员变量的访问权限&#xff0c;Qt 则通过自己的元对…

mysql-connector下载教程(手把手)

下载一个第三方库主要有三种途径&#xff1a; 去官方网站 Oracle 官网去github去Maven中央仓库 前两个方法比较麻烦&#xff0c;你还需要去找。 这里就只介绍maven的方法 Maven类似于手机app的应用商店。 操作步骤&#xff1a; 点击右边进入官网Maven中央仓库 在搜索框中…

NetSuite Saved Search 之 Filter By Summary

在某些业务场景中&#xff0c;用户需要一个TOP X的报表。例如&#xff0c;过去一段时间内&#xff0c;最多数量的事务处理类型。这就需要利用Saved Search中的Filter By Summary功能。 这在Criteria下的Summary页签里可以定义。其作用是对Result中Summary类型的结果进行过滤。也…