`
madbluesky
  • 浏览: 83033 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[转载]postgresql 内存分配

阅读更多

postgresql 内存分配

postgresql的内存分配主要由shared_buffers、temp_buffers、work_mem、maintenance_work_mem参数控制。

shared_buffers又可以叫做共享缓冲区,postgresql对数据操作时都要先将数据从磁盘读取到内存中,然后进行更新,最后再将数据写回磁盘。shared_buffers的功能就是用于存放从磁盘读取的数据。根据文档参数的设置范围一般在25%~40%之间。windows与linux对内存的管理方式不同,在linux中需要注意共享段大小的设置(kernel.shmmax)。

temp_buffers称之为临时缓冲区,用于数据库会话访问临时表数据,系统默认值为8M。可以在单独的session中对该参数进行设置,尤其是需要访问比较大的临时表时,将会有显著的性能提升。

work_mem可以称之为工作内存或者操作内存。其负责内部的sort和hash操作,合适的work_mem大小能够保证这些操作在内存中进行。定义太小的话,sort或者hash操作将需要与硬盘进行swap,这样会极大的降低系统的性能;太大的话致使在能够在内存中完成的操作数量减少,其他的部分需要与磁盘进行swap操作,增加IO降低性能。系统提供的默认值是1M,在实际的生产环境中,要对系统监控数据进行分析,作出最好的选择。
大致有两种方式:估计方法与计算方法。第一种是可以根据业务量的大小和类型,一般语句运行时间,来粗略的估计一下。第二种方式是通过对数据库的监控,数据采集,然后计算其大小。总之合适的大小对系统的性能至关重要。
在实际的维护中可以通过explain analyze分析语句的work_mem大小是否合适。在语句中设置work_mem参数的大小可以充分利用内存,提高语句的执行效率。
对于work_mem内存分配时还要考虑数据库的并发情况,max_connections决定了系统的最大的并发连接数。不论如何调整work_mem都要考虑max_connections*work_mem+shared_buffers+temp_buffers+maintenance_work_mem+操作系统所需内存不能够超过整个的RAM大小,这是非常重要的。
work_mem参数对系统的性能是如此的重要,让其实时的适应数据库的运行状况显的不太可能,但是可以通过对数据库运行周期的监控,总结相应的数据,然后定制一个专用的脚本,专门用来修改work_mem的大小,使其阶段性的更加适应系统的状况,不失为一种好的方法。

maintenance_work_mem称之为维护工作内存,主要是针对数据库的维护操作或者语句。尽量的将这些操作在内存中进行。主要针对VACUUM,CREATE INDEX,REINDEX等操作。在对整个数据库进行VACUUM或者较大的index进行重建时,适当的调整该参数非常必要。
postresql文档提示在启用了autoacuum功能的情况下,该参数不能配置的过大。

分享到:
评论

相关推荐

    Postgresql-10安装包

    **PostgreSQL 10 安装指南** PostgreSQL 是一款强大的开源关系型数据库管理系统,具有高度的稳定性和可扩展性,被广泛应用于各种规模的企业和项目。本文将详细介绍如何使用提供的 PostgreSQL-10 安装包进行安装,...

    PostgreSQL博客1

    PostgreSQL内存管理是其性能的关键因素。它主要包括以下部分: 1. **共享内存**:用于不同后端进程间通信的数据结构,如缓冲区映射表和锁管理器。 2. **工作集内存**:每个后端进程都有自己的一块内存,用于存储...

    PostgreSQL数据库内部原理剖析 PDF

    A Tour of PostgreSQL Internals.pdf Inside the PostgreSQL Query Optimizer.pdf Inside the PostgreSQL Shared Buffer Cache.pdf Internals Of PostgreSQL Wal.pdf PostgreSQL Internals Through Pictures.pdf ...

    postgresql

    2. **环境配置**:在安装前,确保系统满足PostgreSQL的硬件和软件需求,例如操作系统兼容性、内存和磁盘空间。同时,可能需要设置环境变量,如`PATH`,以使命令行工具可用。 3. **安装过程**:运行解压后的安装程序...

    PostgreSQL(postgresql-13.5.tar.bz2)

    PostgreSQL(postgresql-13.5.tar.bz2) PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。...

    postgresql9.6.zip

    - 内存优化:改进了工作内存管理和缓存策略,提高了性能。 - 并行查询:支持在某些查询中并行执行操作,如扫描、排序和聚集,从而加速大型数据集的处理。 - 增强的统计信息:提供更详细的统计信息,帮助优化器做出更...

    MySQL和PostgreSQL的比较

    而在PostgreSQL中,数据缓冲区管理则依赖于`Shared_buffers`,默认配置下,系统分配64个缓冲区,块大小为8K,通过修改`postgresql.conf`文件中的`shared_buffers`参数可调整缓存大小。 #### 四、数据库连接与用户...

    PostgreSQL中文手册9.2

    PostgreSQL中文学习手册 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (数据表 数据表 ) 4 一、表的定义: 一、表的定义: 一、表的定义: . 4 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册...

    PostgreSQL(postgresql-13.5.tar.gz)

    PostgreSQL(postgresql-13.5.tar.gz) PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES...

    PostgreSQL数据库内核分析

    PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析...

    postgresql10文档.zip

    PostgreSQL 10对内存管理进行了改进,包括更好地控制工作集大小、优化缓存机制以及减少不必要的内存分配。这些优化有助于降低系统的内存压力,提高整体性能。 **6. JSONB索引** 对于JSONB数据类型,PostgreSQL 10...

    Navicat for PostgreSQL(PostgreSQL数据库管理)V11.0.10简体中文特别版

    Navicat for PostgreSQL是一套专为PostgreSQL设计的强大数据库管理及开发工具。它可以用于任何版本 7.5 或以上的 PostgreSQL 数据库服务器,并支持大部份 PostgreSQL最新版本的功能,包括触发器、函数、管理用户等。...

    PostgreSQL 14.1 中文手册

    PostgreSQL 14.1 手册 PostgreSQL 全球开发组 翻译:彭煜玮1,PostgreSQL中文社区2文档翻译组

    ruoyi-postgresql-flowable

    通过集成 Flowable,项目可以实现灵活的工作流定义,包括审批流程、任务分配等,极大地提高了工作效率。 在这个项目中,"RuoYi-Vue-Postgresql-master" 文件可能是源代码的主分支,包含前端 Vue.js 应用和后端 ...

    PostgreSQL12.2中文手册.chm.7z

    5. **安全性与权限**:PostgreSQL有强大的用户管理和权限控制机制,手册会指导如何设置用户、角色,以及如何分配权限和访问控制。 6. **复制与高可用性**:PostgreSQL支持多种复制模式,如物理复制、逻辑复制,以及...

    postgresql驱动

    Postgresql

    Postgresql修炼之道 pdf

    根据提供的文件信息,我们需要生成关于Postgresql的知识点。这份文件提供了关于“Postgresql修炼之道 pdf”的信息,说明这是一本关于Postgresql的专业书籍,目的是帮助读者从小工成长为专家。文件还提供了联系方式,...

    PostgreSQL 9.6 RPM包

    PostgreSQL 9.6 RPM包是一款专为Linux系统设计的数据库管理系统安装包,采用RPM(Red Hat Package Manager)格式,适用于基于RPM的Linux发行版,如CentOS、Fedora、RHEL等。PostgreSQL是一款强大的开源关系型数据库...

Global site tag (gtag.js) - Google Analytics