云数据库 RDS-内存使用率高问题定位及处理方法:内存使用率说明

时间:2024-04-11 09:03:24

内存使用率说明

PostgreSQL数据库中内存使用率主要是由共享内存和本地内存组成。

  • 共享内存:主要用于数据的缓冲区、wal日志的缓冲区等,以便提高读写性能。除此之外也包含一些全局信息,如进程、锁信息等。

    shared_buffers参数的值决定初始申请共享内存的大小,RDS for PostgreSQL设置该参数开始值为系统物理内存的25%,该参数合理设置区间为25%~40%,如超过物理内存的 40%,就会发现缓冲的效果并不明显,这是因为PostgreSQL是运行在文件系统之上的,若文件系统也有缓存,将导致双缓存过多,造成负面影响。

  • 本地内存:后台服务会申请一些本地内存,以便暂存一些不需要全局存储的数据,一般分为以下几类:
    • temp_buffers:设置每个会话用于访问临时表的本地缓冲区的最大块数量。
    • work_mem:内部排序聚合操作和hash表在使用临时磁盘文件时使用的内存缓冲区。注意:每个排序操作都会消耗一个work_men内存,并不是一个SQL消耗一个。
    • maintenance_work_mem:维护操作使用的最大内存数。
support.huaweicloud.com/usermanual-rds/rds_pg_08_00006.html