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

postgresql-shared_buffers参数详解

shared_buffers 是 PostgreSQL 中一个非常关键的参数,用于配置服务器使用的共享内存缓冲区的大小。这些缓冲区用于存储数据页,以便数据库可以更快地访问磁盘上的数据。

这个参数在 PostgreSQL 的性能方面有着重要的影响。增加 shared_buffers 可以提高数据库的性能,尤其是对于频繁的读取操作。但是,设置得太大可能会导致内存不足,影响其他系统进程的性能,需要谨慎平衡。

以下是关于 shared_buffers 的一些重要信息:

  1. 作用: 控制 PostgreSQL 服务器用于缓存数据页的共享内存大小。这些数据页是数据库从磁盘读取的数据的副本,在内存中存储以提高后续读取操作的速度。

  2. 默认值: 默认情况下,shared_buffers 的值是相对于系统总内存的一部分。默认设置通常比较保守,以兼顾系统的其他资源需求。

  3. 调整建议: 适当设置 shared_buffers 的值取决于多个因素,包括系统的可用内存、数据库负载、运行中的查询类型等。增加 shared_buffers 可以提高性能,但并不是所有情况下都能带来线性的性能提升。

  4. 内存计算: 通常建议将 shared_buffers 设置为物理内存的 25% 到 40% 之间。这只是一个起点,最佳值需要根据实际情况和性能测试来确定。

  5. 影响:shared_buffers 设置得过小可能导致频繁的磁盘 I/O 操作,影响性能;而设置得过大可能占用大量内存,影响系统的稳定性和其他进程的性能。

修改 shared_buffers 后通常需要重启 PostgreSQL 服务器才能使更改生效。

1. 计算机缓存机制

计算机缓存是指用于临时存储数据的一种高速存储器,其目的是提高数据访问速度并加速计算机系统的性能。缓存系统通过在数据的访问路径中引入更快的存储介质,减少了对慢速存储(如硬盘)的访问次数,从而加快数据的读取和写入。

1.1. 类型和工作原理:

  1. CPU 缓存(Cache Memory): 在现代计算机系统中,CPU 缓存是其中最重要的缓存之一。它通常分为三级:一级缓存(L1 Cache)、二级缓存(L2 Cache)和三级缓存(L3 Cache)。这些缓存以层级结构的方式嵌入在 CPU 内部,并用于存储CPU经常需要访问的数据和指令。这些缓存级别按速度和容量递减排列,L1 最快但容量最小,L3 最慢但容量最大。

  2. 硬盘缓存(Disk Cache): 操作系统和文件系统会使用部分内存作为硬盘缓存,用于存储磁盘上最近访问的数据块的副本。这样的缓存减少了从慢速的机械硬盘读取数据的需求,提高了文件访问速度。

  3. 数据库缓存: 数据库系统通常有自己的缓存机制,如之前提到的 PostgreSQL 的 Shared Buffers。这些缓存用于存储数据库中经常被访问的数据,以减少对存储介质(如磁盘)的访问,提高数据库查询的性能。

1.2. 缓存优势和局限性:

  • 优势:

    • 提高数据读取速度:通过存储最近使用的数据副本,可以快速响应对相同数据的再次访问。
    • 减少延迟:由于缓存通常位于 CPU 或内存之类的更快速介质中,因此访问这些缓存的延迟更低。
    • 改善性能:优化内存和磁盘之间的数据传输,降低系统响应时间,提高整体性能。
  • 局限性:

    • 有限容量:缓存的容量有限,因此可能无法容纳所有的数据。
    • 数据一致性问题:缓存数据更新不及时可能导致一致性问题。
    • 成本:更大容量、更快速的缓存通常成本更高。

1.3. 管理和优化缓存:

  • 合理配置大小: 根据应用需求和硬件条件,合理配置缓存的大小以平衡性能和成本。
  • 监控和优化: 定期监控缓存使用情况,优化缓存命中率,避免缓存污染(淘汰频繁使用的数据)等问题。
  • 使用合适的缓存策略: 包括先进先出(FIFO)、最近最少使用(LRU)、最不经常使用(LFU)等策略以及写回、写通过等写入策略。

综合来说,缓存在计算机系统中扮演着至关重要的角色,对于提高系统的整体性能至关重要。因此,合理利用和管理缓存是优化系统性能的关键一环。

1.4. OS Cache

  • Linux: 在 Linux 上,可以通过修改内核参数(如 vm.dirty_* 和 vm.swappiness)来影响磁盘缓存的行为。这些参数控制着内核对于脏页(未写入磁盘的数据页)的处理方式以及内存交换(swapping)行为。但是,修改这些参数需要谨慎,最好了解其影响和风险。

  • Windows: Windows 操作系统也有一些控制文件系统缓存的参数,但通常情况下,Windows 会自动管理这些参数。

2. BGWriter在PostgreSQL中的作用是什么?

`BGWriter`(Background Writer)是 PostgreSQL 中的一个重要后台进程,负责管理缓冲区(Buffer Cache)并尽可能将脏页(已被修改但尚未写入磁盘)异步地写入到磁盘,以确保数据的持久性和系统性能的最优化。以下是 `BGWriter` 后台进程的主要功能和作用:1. **脏页管理**:`BGWriter` 负责管理共享缓冲区中的脏页,这些脏页包含了已经被修改但尚未写入磁盘的数据。2. **异步写入脏页**:它定期检查缓冲区中的脏页,并尝试将这些脏页异步地写入到磁盘。这样做有助于降低对磁盘的频繁访问,提高数据库系统的性能。3. **减少后续写入操作的影响**:通过将脏页定期写入磁盘,`BGWriter` 可以减少后续写入操作对系统性能的影响。这有助于确保写入操作不会阻塞太多,并且减少了系统性能突然下降的风险。4. **优化磁盘写入**:`BGWriter` 通过尝试合并或共享磁盘写入操作,以提高写入磁盘的效率,减少对磁盘的访问次数,进而优化系统性能。需要注意的是,`BGWriter` 进程的行为相对被动,其工作是在后台周期性地进行。默认情况下,它会根据配置中的参数自动执行,通常不需要额外的手动调整。然而,在某些高负载或特定场景下,对 `BGWriter` 参数的微调可能有助于进一步优化数据库的性能。

在这里插入图片描述

3. 修改参数的优点和缺点

在 PostgreSQL 中,修改 shared_buffers 参数后,重启数据库服务器并重新启动之后,对于 UPDATE 操作的速度可能会有一定影响,但影响的具体程度取决于多种因素。

shared_buffers 参数控制着数据库系统用于缓存数据的共享内存区域大小。增大 shared_buffers 的值通常会增加数据库系统在内存中缓存数据的能力,从而提高查询性能,尤其是能够更快地访问和操作缓存中的数据。

然而,增大 shared_buffers 参数值可能会导致数据库系统在启动时需要更多的内存,并且在运行过程中可能占用更多的系统资源。因此,如果您在修改 shared_buffers 参数后重启 PostgreSQL,可能会出现以下情况:

  1. 启动时间增加:如果您将 shared_buffers 值增大到一个较大的数值,可能会导致 PostgreSQL 在启动时需要更长的时间来分配和管理这部分较大的内存空间。

  2. 内存占用增加:增大 shared_buffers 参数会占用更多的内存。如果系统可用内存不足,可能会导致其他进程的内存竞争,甚至可能出现交换(swap)。

  3. 影响 UPDATE 操作速度:在某些情况下,增大 shared_buffers 可能会提高 UPDATE 操作的速度,尤其是对于频繁读取的数据,因为缓存命中率可能会提高。但并不是所有的 UPDATE 操作都会直接受益于这种变化。

总体来说,修改 shared_buffers 后对 UPDATE 操作速度的影响因多种因素而异,包括系统的硬件资源、数据库的使用模式、查询访问模式等。为了评估对性能的影响,建议在生产环境之前在测试环境中进行测试和评估,以便更好地了解参数调整对系统的影响。

相关文章:

postgresql-shared_buffers参数详解

shared_buffers 是 PostgreSQL 中一个非常关键的参数,用于配置服务器使用的共享内存缓冲区的大小。这些缓冲区用于存储数据页,以便数据库可以更快地访问磁盘上的数据。 这个参数在 PostgreSQL 的性能方面有着重要的影响。增加 shared_buffers 可以提高数…...

windows10 Arcgis pro3.0-3.1

我先安装的arcgis pro3.0,然后下载的3.1。 3.0里面有pro、help、sdk、还有一些补丁包根据个人情况安装。 3.1里面也是这些。 下载 正版试用最新的 ArcGIS Pro 21 天教程,仅需五步!-地理信息云 (giscloud.com.cn) 1、安装windowsdesktop-…...

Apache Airflow (十四) :Airflow分布式集群搭建及测试

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹…...

解决VSCode按住Ctrl(or Command) 点击鼠标左键不跳转的问题(不能Go to Definition)

问题出现 往往在升级了VSCode以后,就会出现按住Ctrl(or Command) 点击鼠标左键不跳转的问题,这个问题很常见。 解决办法 1 进入VScode的首选项,选择设置 2 输入Go to definition,找到如下两个设置&#…...

使用DrlParser 检测drl文件是否有错误

为避免运行时候错误,drools 7 可以使用DrlParser预先检测 drl文件是否正常。 parser 过程通常不会返回异常ruleDescr parser.parse(resource); 为空代表有异常 具体测试代码如下: public class DrlParserTest {public static void main(String[] arg…...

ArcGIS中基于人口数据计算人口密度的方法

文章目录 一、密度分析原理二、点密度分析三、线密度分析四、核密度分析一、密度分析原理 密度分析是指根据输入的要素数据集计算整个区域的数据聚集状况,从而产生一个联系的密度表面。通过密度计算,将每个采样点的值散步到整个研究区域,并获得输出栅格中每个像元的密度值。…...

在CentOS 8.2中安装Percona Xtrabackup 8.0.x备份MySql

添加Percona软件库: yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm 安装Percona Xtrabackup 8.0.x: yum install percona-xtrabackup-80 确认安装完成后,您可以使用以下命令验证Percona Xtrabackup的安装…...

javascript中的正则表达式的相关知识积累

01-javascript中的正则表达式用符号/作为正则表达式的开始符和结束符 javascript中的正则表达式用符号/作为正则表达式的开始符和结束符。 即javascript的正则表达式如下所示: /正则表达式/02-^:匹配字符串的开始 ^: 该符号表示匹配字符串的开始。这个…...

51k+ Star!动画图解、一键运行的数据结构与算法教程!

大家好,我是 Java陈序员。 我们都知道,《数据结构与算法》 —— 是程序员的必修课。 无论是使用什么编程语音,亦或者是前后端开发,都需要修好《数据结构与算法》这门课! 在各个互联网大产的面试中,对数据…...

4.7 矩阵的转置运算(C语言实现)

【题目描述】用键盘从终端输入一个3行4列的矩阵,编写一个函数对该矩阵进行转置操作。 【题目分析】矩阵的转置运算是线性代数中的一个基本运算。显然,一个m行n列的矩阵经过转置运算后就变成了一个n行m列的矩阵。这个问题的解决关键是要解决两个问题&…...

快速掌握Pyqt5的9种显示控件

Pyqt5相关文章: 快速掌握Pyqt5的三种主窗口 快速掌握Pyqt5的2种弹簧 快速掌握Pyqt5的5种布局 快速弄懂Pyqt5的5种项目视图(Item View) 快速弄懂Pyqt5的4种项目部件(Item Widget) 快速掌握Pyqt5的6种按钮 快速掌握Pyqt5的10种容器&…...

【WP】Geek Challenge 2023 web 部分wp

EzHttp http协议基础题 unsign 简单反序列化题 n00b_Upload 很简单的文件上传&#xff0c;上传1.php&#xff0c;抓包&#xff0c;发现php内容被过滤了&#xff0c;改为<? eval($_POST[‘a’]);?>&#xff0c;上传成功&#xff0c;命令执行读取就好了 easy_php …...

Elasticsearch:为现代搜索工作流程和生成式人工智能应用程序铺平道路

作者&#xff1a;Matt Riley Elastic 的创新投资支持开放的生态系统和更简单的开发者体验。 在本博客中&#xff0c;我们希望分享 Elastic 为简化你构建 AI 应用程序的体验而进行的投资。 我们知道&#xff0c;开发人员必须在当今快速发展的人工智能环境中保持灵活性。 然而&a…...

【WinForm.NET开发】Windows窗体开发概述

本文内容 介绍为什么要从 .NET Framework 迁移生成丰富的交互式用户界面显示和操纵数据将应用部署到客户端计算机 Windows 窗体是一个可创建适用于 Windows 的丰富桌面客户端应用的 UI 框架。 Windows 窗体开发平台支持广泛的应用开发功能&#xff0c;包括控件、图形、数据绑…...

WPF 简单绘制矩形

Canvas 画矩形&#xff1a; view和viewModel 绑定一起才显示移动轨迹&#xff08;可以定义一个string 看是否绑定属性的路径是正确的&#xff09; 前台&#xff08;绑定事件和显示移动的线&#xff09;&#xff1a; <Canvas Name"canvas" Background"#01FF…...

crui_lvgl 一个LVGL的DSL辅助工具的设想

设想 Target以LVGL为目标&#xff0c;语法以CSS为Reference。 CSS 规范 略 CSS规范最强大的属于CSS自身的属性很多&#xff0c;可以通过class和伪属性选择器对UI进行直接控制。 QML规范 ApplicationWindow {visible: truewidth: Constants.widthheight: Constants.height…...

公共部门生成式人工智能的未来

作者&#xff1a;Dave Erickson 最近&#xff0c;我与 IDC Government Insights 研究副总裁阿德莱德奥布莱恩 (Adelaide O’Brien) 坐下来讨论了全球公共部门生成式人工智能的当前和未来状况。 完整的对话可以按需查看&#xff0c;但我也想强调讨论中的一些要点。 我们的目标是…...

【报名】2023产业区块链生态日暨 FISCO BCOS 开源六周年生态大会

作为2023深圳国际金融科技节系列活动之一&#xff0c;由深圳市地方金融监督管理局指导&#xff0c;微众银行、金链盟主办的“2023产业区块链生态日暨FISCO BCOS开源六周年生态大会”将于12月15日下午14:00在深圳举办。 今年的盛会将进一步升级&#xff0c;以“FISCO BCOS和TA的…...

MySQL之性能分析和系统调优

MySQL之性能分析和系统调优 性能分析 查看执行计划 EXPLAIN EXPLAIN作为MySQL的性能分析神器&#xff0c;可以用来分析SQL执行计划&#xff0c;需要理解分析结果可以帮助我们优化SQL explain select … from … [where ...]TABLE 表名 查询的每一行记录都对于着一张表 id 该…...

时间复杂度为 O(n^2) 的排序算法 | 京东物流技术团队

对于小规模数据&#xff0c;我们可以选用时间复杂度为 O(n2) 的排序算法。因为时间复杂度并不代表实际代码的执行时间&#xff0c;它省去了低阶、系数和常数&#xff0c;仅代表的增长趋势&#xff0c;所以在小规模数据情况下&#xff0c; O(n2) 的排序算法可能会比 O(nlogn) 的…...

解决Claude Code频繁封号问题转向Taotoken稳定接入Anthropic模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 解决Claude Code频繁封号问题转向Taotoken稳定接入Anthropic模型 基础教程类&#xff0c;针对受Claude Code封号困扰的用户&#x…...

解决Redroid安卓12串流黑屏:修改SurfaceFlinger绕过Secure Flag的实战记录

解决Redroid安卓12串流黑屏&#xff1a;修改SurfaceFlinger绕过Secure Flag的实战记录 在RK3588开发板上运行Redroid容器时&#xff0c;许多开发者会遇到一个棘手问题&#xff1a;使用scrcpy等工具串流显示某些应用界面时&#xff0c;屏幕突然变黑。这并非硬件故障&#xff0c;…...

Ryujinx终极指南:免费开源Switch模拟器快速入门与性能优化

Ryujinx终极指南&#xff1a;免费开源Switch模拟器快速入门与性能优化 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx Ryujinx是一款基于C#开发的开源Nintendo Switch模拟器&#xff0…...

从理论到UI:手把手教你用PyQt5给MTCNN人脸检测算法做个可视化界面

从理论到UI&#xff1a;手把手教你用PyQt5给MTCNN人脸检测算法做个可视化界面 在计算机视觉领域&#xff0c;人脸检测一直是热门研究方向之一。MTCNN&#xff08;Multi-task Cascaded Convolutional Networks&#xff09;作为经典的人脸检测算法&#xff0c;凭借其高精度和实时…...

MCP协议技术架构深度解析:构建AI工具生态系统的标准化方案

MCP协议技术架构深度解析&#xff1a;构建AI工具生态系统的标准化方案 【免费下载链接】Awesome-MCP-ZH MCP 资源精选&#xff0c; MCP指南&#xff0c;Claude MCP&#xff0c;MCP Servers, MCP Clients 项目地址: https://gitcode.com/gh_mirrors/aw/Awesome-MCP-ZH MC…...

ChromeKeePass深度解析:如何实现KeePass密码自动填充的强力浏览器扩展?

ChromeKeePass深度解析&#xff1a;如何实现KeePass密码自动填充的强力浏览器扩展&#xff1f; 【免费下载链接】ChromeKeePass Chrome extensions for automatically filling credentials from KeePass 项目地址: https://gitcode.com/gh_mirrors/ch/ChromeKeePass 你是…...

大学英语四级试卷历年真题及答案PDF电子版百度网盘

大学英语四级备考必备历年真题合集&#xff08;2015年6月-2025年12月&#xff09;&#xff0c;高清 PDF 电子版含完整试卷与详细答案解析&#xff0c;以及配套听力音频&#xff0c;题型齐全答案详实&#xff0c;可下载打印刷题&#xff0c;吃透真题考点&#xff0c;高效冲刺顺利…...

DS4Windows终极指南:如何免费解决手柄漂移并优化游戏操控精度

DS4Windows终极指南&#xff1a;如何免费解决手柄漂移并优化游戏操控精度 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 你是否遇到过手柄摇杆自动漂移、瞄准时准星抖动、按键响应延迟等…...

【权威实测报告】:在137组对比测试中,仅2组prompt达成Apple Human Interface Guidelines认证级毛玻璃效果(附完整prompt审计清单)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;【权威实测报告】&#xff1a;在137组对比测试中&#xff0c;仅2组prompt达成Apple Human Interface Guidelines认证级毛玻璃效果&#xff08;附完整prompt审计清单&#xff09; 为验证当前主流AI图像生成模型…...

拆解昇腾 CANN 五层架构:一个 MatMul 请求的完整旅程

适合人群&#xff1a;想从全局视角理解 CANN 架构的开发者 核心仓库&#xff1a;https://atomgit.com/cann 阅读时长&#xff1a;6 分钟 目录 一、为什么需要五层架构&#xff1f;二、第1层&#xff1a;昇腾计算语言层 AscendCL三、第2层&#xff1a;昇腾计算服务层四、第3层&…...