searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

PostgreSQL:内存结构

2022-06-21 08:21:37
380
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/,如需转载,请注明出处,否则将追究法律责任。

0条评论
0 / 1000
我是小朋友
80文章数
5粉丝数
我是小朋友
80 文章 | 5 粉丝

PostgreSQL:内存结构

2022-06-21 08:21:37
380
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/,如需转载,请注明出处,否则将追究法律责任。

文章来自个人专栏
云知识的搬运工
224 文章 | 7 订阅
0条评论
0 / 1000
请输入你的评论
2
0