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

PostgreSQL的内存参数

PostgreSQL的内存参数

基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777

PostgreSQL 提供了多种内存参数,可以通过调整这些参数来优化数据库的性能。以下是一些主要的内存参数及其简要说明:

主要内存参数概述

  1. shared_buffers
    • 描述:决定 PostgreSQL 用于缓存表和索引数据的内存大小。通常推荐设置为系统内存的 25%-50%。
    • 示例
[pg16@test ~]$ cat data/postgresql.conf |grep shared_buffers
shared_buffers = 128MB                  # min 128kB
  1. work_mem
    • 描述:用于操作(如排序、哈希聚合、联接等)内存的大小。每个操作会单独使用这些内存,可以调多但不能过大。
    • 示例
[pg16@test ~]$ cat data/postgresql.conf |grep work_mem
work_mem = 4MB                          # min 64kB
  1. maintenance_work_mem
    • 描述:用于维护操作(如 VACUUM, CREATE INDEX, ALTER TABLE ADD FOREIGN KEY 等)的内存大小。
    • 示例
[pg16@test ~]$ cat data/postgresql.conf |grep maintenance_work_mem
maintenance_work_mem = 64MB             # min 1MB
  1. temp_buffers
    • 描述:用于每个数据库会话的临时表缓存内存大小。
    • 示例
[pg16@test ~]$ cat data/postgresql.conf |grep temp_buffers
temp_buffers = 8MB                      # min 800kB
  1. max_connections
    • 描述:允许的最大数据库连接数。需要结合 shared_buffers 参数调节。
    • 示例
[pg16@test ~]$ cat data/postgresql.conf |grep max_connections
max_connections = 50                    # (change requires restart)
  1. effective_cache_size
    • 描述:设置 PostgreSQL 认为操作系统内核文件系统缓存及 PostgreSQL 缓存的大小。推荐设置为系统内存的 50%-75%。
    • 示例
[pg16@test ~]$ cat data/postgresql.conf |grep effective_cache_size
effective_cache_size = 1GB
  1. wal_buffers
    • 描述:用于存储写入 WAL (Write-Ahead Log) 的缓冲区大小。通常设置为 shared_buffers 的 3%-4%。
    • 示例
[pg16@test ~]$ cat data/postgresql.conf |grep wal_buffers
wal_buffers = 8MB                       # min 32kB, -1 sets based on shared_buffers
  1. checkpoint_completion_target
    • 描述:设置 checkpoint 完成平均占用时间的比例(0到1之间)。
    • 示例
[pg16@test ~]$ cat data/postgresql.conf |grep checkpoint_completion_target
checkpoint_completion_target = 0.9      # checkpoint target duration, 0.0 - 1.0
  1. autovacuum_work_mem
    • 描述:用于自动化 VACUUM 操作的内存大小。
    • 示例
[pg16@test ~]$ cat data/postgresql.conf |grep autovacuum_work_mem
autovacuum_work_mem =64MB

内存参数配置示例

以下是一个示例 postgresql.conf 中内存参数配置:

# 内存配置示例shared_buffers = 2GB                        # 共享内存缓冲区,设置为系统内存的 25%-50%
work_mem = 64MB                             # 每个操作的工作内存,适当调整以优化查询性能
maintenance_work_mem = 512MB                # 维护任务的工作内存
temp_buffers = 64MB                         # 临时表缓存内存
max_connections = 200                       # 最大连接数,根据并发需求设置
effective_cache_size = 6GB                  # 预期总缓存大小,包括操作系统的文件系统缓存
wal_buffers = 16MB                          # WAL 缓冲区
checkpoint_completion_target = 0.7          # checkpoint 完成时间比例
autovacuum_work_mem = 64MB                  # 自动 `VACUUM` 操作的内存大小

其他相关参数

除了主要内存参数,还有一些其他参数可能间接影响内存使用:

  • sort_mem / work_mem: 不同版本的配置名称不同,但作用相似。
  • maintenance_work_mem: 影响 CREATE INDEX, VACUUM, REINDEX 等操作的性能。
  • hash_mem_multiplier: 影响哈希连接的内存分配。
  • max_worker_processes: 影响并行查询的最大工作进程数。
  • parallel_min_parallel_table_scan_size: 影响并行查询的触发条件。

调整和优化建议

  1. 监控内存使用情况
    使用系统工具(如 top, htop, free -m)和 PostgreSQL 内置视图(如 pg_stat_activity)监控内存使用情况。

  2. 逐步调整参数
    从小到大逐步调整内存参数,观察系统性能变化,避免一次性调整过大导致系统不稳定。

  3. 平衡系统资源
    结合数据库和操作系统的内存需求,合理分配系统内存资源。确保操作系统有足够的内存用于文件系统缓存和其他重要任务。

  4. 考虑实际工作负载
    根据实际工作负载特点调整内存参数。例如,查询密集的环境下可以增大 work_mem,而批处理任务较多的环境下则更关注 maintenance_work_mem 等参数。

小结

调整和优化 PostgreSQL 的内存参数可以显著提升数据库的性能和效率。每个参数的具体值应根据系统资源、实际工作负载和性能需求进行合理配置和优化。通过逐步调整和监控,你可以找到最适合你的系统的配置参数组合。

谨记:心存敬畏,行有所止。

相关文章:

PostgreSQL的内存参数

PostgreSQL的内存参数 基础信息 OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本:16.2 pg软件目录:/home/pg16/soft pg数据目录:/home/pg16/data 端口:5777PostgreSQL 提供了多种内存参数&#x…...

【教程】在CentOS上使用Docker部署前后端分离项目的完整指南

当在CentOS上使用Docker部署前后端分离项目时,需要遵循一系列步骤来实现这一目标。以下是每个步骤的详细内容: 步骤1:安装Docker和Docker Compose 1.1 安装Docker 在CentOS上安装Docker,可以按照以下步骤进行: sudo yum install -y yum-utils device-mapper-persistent…...

某公司新招了个牛逼的架构师后.....

网友评论: 架构师一个响指之后。第二天,老板不见了走走停停 回头已是数月图片是我的故事没错了,本来我们组有10个人,我把代码重构之后,只要半个人维护,于是老板要裁掉9个>人,于是我被搞走了图…...

云计算和雾计算

雾计算作为传统集中式数据存储系统(云)和边缘设备之间的中间层。雾扩展了云,使计算和数据存储更接近边缘。雾由多个节点(雾节点)组成,并创建一个本地网络,使其成为一个去中心化的生态系统——雾…...

正缘画像 api数据接口

测测正缘画像,相貌特征,高矮胖瘦,黑白美丑,对方何许人也,远嫁近娶,何方定居,家庭观,持家爱家,生活质量,富裕贫穷,健康情况,测算结果仅…...

Java 基础面试300题 (171- 200)

Java 基础面试300题 (171- 200) 171.什么是同步? 当多个线程试图同时访问共享资源时,那么他们需要以某种方式让资源一次只能由一个线程访问。实现这一目标的过程被称为同步。Java提供了一个名为synchronized的关键字实现这一目标…...

0基础学习Elasticsearch-使用Java操作ES

文章目录 1 背景2 前言3 Java如何操作ES3.1 引入依赖3.2 依赖介绍3.3 隐藏依赖3.4 初始化客户端(获取ES连接)3.5 发送请求给ES 1 背景 上篇学习了0基础学习Elasticsearch-Quick start,随后本篇研究如何使用Java操作ES 2 前言 建议通篇阅读再回…...

【Linux】GNU编译器基础

文章目录 GCCMakefile、make GCC 常见的GNU编译器是GCC其包含gcc以及g等,适用于C/C中,在Windows系统中通常使用IDE进行程序的编写和编译、链接等操作,但在Linux系统中通常使用GNU编译器来进行,对于C/C等高级语言需要进行预编译、编…...

Linux 软件安装:从源码编译到包管理器安装

Linux 软件安装:从源码编译到包管理器安装 在 Linux 操作系统中,软件安装是一个非常重要的任务。不同的软件安装方式有不同的优缺点,本篇博客将介绍 Linux 软件安装的几种方式,包括从源码编译安装、使用包管理器安装和使用第三方…...

Python3 match-case 语句

前言 本文主要介绍match-case语句与switch-case的区别,及match-case语句的基本用法。 文章目录 前言一、switch-case 和match-case的区别二、match-case的基本用法1、可匹配的数据类型2、多条件匹配3、通配符匹配 一、switch-case 和match-case的区别 C语言里面s…...

图论第三天

似乎要团建了&#xff0c;我再猫会。我必须参与上团建再走。 130.被围绕的区域 先把外围的O变成A&#xff0c;再把飞地的O变成X&#xff0c;再把外围A变回O class Solution { public:int neighbor[4][2] {1,0,0,-1,-1,0,0,1};void solve(vector<vector<char>>&a…...

计算机网络学习2

文章目录 信道复用技术 第三章数据链路层概述数据链路层的三个重要问题封装成帧和透明传输差错检测可靠传输的相关基本概念可靠传输的实现机制停止等待协议回退N帧协议选择重传协议 点对点协议PPP共享式以太网网络适配器和MAC地址CSMA_CD协议的基本原理共享式以太网的争用期共享…...

unittest框架

目录 框架&#xff1a; unittest框架: 使用的原因: 核心要素(组成): TestCase测试用例: 可能出现的错误&#xff1a; TestSuite(测试套件): TestRunner(测试执行): 整体步骤: 查看执行结果: TestLoader测试加载: 方法级别Fixture: 类级别Fixture: 模块级别Fixture: 用例脚本…...

Python中的__str__和__repr__:揭示字符串表示的奥秘

标题&#xff1a;Python中的__str__和__repr__&#xff1a;揭示字符串表示的奥秘 摘要 在Python中&#xff0c;对象的字符串表示对于调试和日志记录至关重要。__str__和__repr__是两个特殊的方法&#xff0c;用于定义对象的字符串表示形式。尽管它们在功能上相似&#xff0c;…...

gazebo插入一个图片

在下面的目录下添加文件夹 my_ground_plane 文件夹内容如下 model.sdf <?xml version"1.0" encoding"UTF-8"?> <sdf version"1.4"><model name"my_ground_plane"><static>true</static><link na…...

(已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据

Modals是Bootstrap中用户弹框用的组件,使用时不需要额外引入其他插件,在引入了boostrap.js或者boostrap.min.js前提下就可以使用。 官方的示例: <!-- Button trigger modal --> <button type="button" class="btn btn-primary" data-bs-…...

网络编程介绍(IP)(一)

定义&#xff1a;可以让设备中的程序与网络上其他设备中的程序进行数据交互&#xff08;实现网络通信的&#xff09;。 java.net.*包下提供了网络编程的解决方案。 基本的通信架构&#xff1a; CS架构&#xff08; Client客户端/Server服务端 &#xff09;&#xff1a; Clie…...

C语言 指针——函数指针

目录 什么是函数指针&#xff1f; 函数指针的定义 定义函数指针时的常见错误 函数指针有什么用&#xff1f; 函数指针的主要应用 什么是函数指针&#xff1f; 函数指针 (Function Pointer) 就是指向函数的指针变量 数据类型 ( * 指针变量名 ) ( 形参列表 ); 例如&#x…...

【C++】———list容器

前言 1.list容器简单来说其实就是之前的链表结构。 2.这里的list用的是双向带头结点的循环链表。 目录 前言 一 构造函数 1.1 list (); 1.2 list (size_type n, const value_type& val value_type() ); 1.3 list (InputIterator first, InputIterator last…...

【网络安全技术】——期末复习(冲刺篇)

&#x1f4d6; 前言&#xff1a;快考试了&#xff0c;做篇期末总结&#xff0c;都是重点与必考点。 题型&#xff1a;材料分析题、简答题、看图分析题 课本&#xff1a; 目录 &#x1f552; 1. 计算机网络安全概述&#x1f558; 1.1 安全目标&#x1f558; 1.2 常见的网络安全…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...