【0419】Postgres内核 buffer pool 所需共享内存(shared memory)大小
1. buffer pool 内容
Postgres内核 启动服务后, 在 Postmaster 的主函数 PostmasterMain() 中,会通过 InitializeShmemGUCs() 函数调用完成 Postgres 服务所需共享内存总和的计算与初始化。
其中缓冲池(buffer pool)的共享内存大小计算是由函数 BufferShmemSize() 完成,该函数实现于 buf_init.c 。其中包括:数据页(data pages)、缓冲区描述符(buffer descriptors)、哈希表(hash tables)等。
函数 BufferShmemSize() 完成的源码实现如下:
Size
BufferShmemSize(void)
{Size size = 0;/* (1) 缓冲区