我正在调整我的PostgreSQL数据库effective_cache_size
。 PostgreSQL文档引用PostgreSQL缓冲区高速缓存中的预期可用内存来计算可用于磁盘高速缓存的预期内存。我怎么估计这个? shared_buffers
是为缓冲区缓存分配的唯一内存吗?
答案 0 :(得分:3)
effective_cache_size
表示机器的总内存减去除了磁盘缓存之外的其他内容。
来自格雷格的史密斯5-Minute Introduction to PostgreSQL Performance:
应该将effective_cache_size 设置为剩余的内存量 考虑到操作使用的内容后的磁盘缓存 系统,专用的PostgreSQL内存和其他应用程序
shared_buffers
在这句话中被认为是“专用的PostgreSQL内存”,但除此之外,它与effective_cache_size
无关。
在Linux上,如果在系统处于典型内存使用状态(运行的所有应用程序和缓存都很热)时运行free
,cached
字段为effective_cache_size
提供了良好的值。
如果您使用生成图表的监控工具,您可以一目了然地查看缓存的大小。
答案 1 :(得分:2)
专用Postgres服务器的一个典型建议是将effective_cache_size设置为可用RAM的大约3/4。用于设置合理默认值的好工具是pgtune,可在此处找到:https://github.com/gregs1104/pgtune