Postgres 内存计算 effective_cache_size

Postgres memory calculation effective_cache_size

我正在验证我的生产 Postgres 实例中的一些配置。我们的数据库服务器有 32 GB RAM。从 pg_settings,我看到 effective_cache_size 设置为:

postgres=> select name, setting, unit from pg_settings where name like 'effective_cache_size'; 
         name         | setting | unit 
----------------------+---------+------
 effective_cache_size | 7851762 | 8kB
(1 row)

据我了解,这个值占7851762 X 8 KB = 62.8 GB。如果我的计算是正确的,我们基本上是在告诉优化器我们有 62 GB 的这个参数,而我们只有 32 GB 的物理 RAM。

如果我计算这个参数有误,请指正。我总是对为 8 KB 的单元计算参数分配感到困惑。

7851762 乘以 8 kB 大约是 60 GB。

如果机器专用于 PostgreSQL 数据库,我会将设置配置为 30 GB。

此参数告诉 PostgreSQL 有多少内存可用于缓存其文件。如果该值很高,PostgreSQL 将估计嵌套循环连接在内侧进行索引扫描更便宜,因为它假定索引可能会被缓存。