共享内存在 PostgreSQL 服务器启动时分配,由所有后端进程共同使用 。 共享内存主要由三部分组成 :
PostgreSQL启动后,会生成一块共享内存,共享内存主要是用于数据块的缓冲区,以便提高读写性能。wal日志的缓冲区和clog(commit log)缓冲区也位于共享内存中。除此之外,一些全局信息也保存在共享内存中,如进程信息,锁信息,全局统计信息等。
一般情况下,share_buffer 值不需要设置的很大,推荐值为是1/4物理内存。默认值为128MB,启动时配置。
postgres->postgres@[local]:5432=# show shared_buffers;
shared_buffers
----------------
128MB
(1 row)
postgres->postgres@[local]:5432=# select name,setting,unit,current_setting(name) from pg_settings where name = ‘shared_buffers‘;
shared_buffers的较大设置通常需要相应增加max_wal_size,以便分散在较长时间内写入大量新数据或更改数据的过程。
用于指定尚未写入磁盘的WAL数据的共享内存量。 默认设置-1选择大小等于3%的shared_buffers,但不小于64kB,也不超过一个WAL段的大小,通常为16MB。
WAL缓冲区的内容在每次事务提交时写入磁盘,因此极大的值不太可能提供显着的好处。 但是,将此值设置为至少几兆字节可以提高许多客户端一次提交的繁忙服务器的写入性能。 默认设置-1选择的自动调整在大多数情况下应该给出合理的结果。
后台服务进程除了访问共享内存外,还会申请一些本地内存,以便暂存一些不需要全局存储的数据,一般分为以下几类:
原文:https://www.cnblogs.com/binliubiao/p/14916193.html