ITPub博客

首页 > 数据库 > PostgreSQL > PostgreSQL:内存结构

PostgreSQL:内存结构

原创 PostgreSQL 作者:Ryan_Bai 时间:2020-09-02 15:16:31 0 删除 编辑

在 Postgresql 中,内存大概被分为两块

  • Local memory area:为每一个 backend process 分配的内存

  • Shared memory area:PostgreSQL server 所有的 backgroud process 使用的内存

Local memory area 

每一个backend process 都会分配一块local memory area, 每一块区域又分为三个子区域 ,见下表

sub-area description
work_mem 用户在 sort、distinct、merge join、hash join 的时候会用到这块区域
maintenance_work_mem vacuum、reindex、create index 等操作会用到这块区域
temp_buffers 存储临时表会用到这块区域

Shared memory area 

这块区域在服务器启动的时候分配,这块区域也是分为好几个子区域,见下面介绍

sub-area description
shared buffer pool 将表或者索引的 page 从磁盘加载到 shared buffer,然后在shared buffer 操作
WAL buffer 在服务端出现问题的时候,确保数据不会丢失,在写到磁盘之前,wal buffer 是 wal log 的缓存区域
commit log 为了并发控制所有事物的状态的保持而分配的区域

另外,Postgresql 还分配一些其他的内存区域:

  • 为访问控制分配的子区域,比如轻量级锁,共享或者专有锁。

  • 为其他 backgroud process 提供的子区域,比如检查点、vacuum。

  • 为事物处理提供的子区域,比如事物中的保存点,和二阶段事物提交。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31490526/viewspace-2716598/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE Associate; OCMU 用户组成员; Oracle 10g OCE、OCA、OCP; Oracle 11g OCP、OCM; MySQL 5.6 OCP; Oracle 11g OCP讲师; PostgreSQL PGCE 获得者;

注册时间:2017-09-18

  • 博文量
    227
  • 访问量
    277221