---
title: "All Your GUCs in a Row: effective_cache_size"
url: https://daily.dev/posts/all-your-gucs-in-a-row-effective-cache-size-7o5w3bmms
source_url: https://postgr.es/p/9mB
type: article
source: "Planet PostgreSQL"
published: 2026-06-21T01:03:21.684Z
updated: 2026-06-21T01:03:44.032Z
tags: ["postgresql"]
reading_time: 5
upvotes: 0
comments: 0
language: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# All Your GUCs in a Row: effective_cache_size

**[Planet PostgreSQL](https://daily.dev/sources/planet-postgresql)** · 5 min read · 0 upvotes · 0 comments

## Summary

effective_cache_size is one of PostgreSQL's most misunderstood parameters. It does not allocate memory, reserve RAM, or change runtime behavior — it is purely a hint to the query planner estimating how much total cache (shared_buffers plus OS page cache) is available. The planner uses this value via the Mackert-Lohman formula to estimate physical I/O cost for index scans: a high value makes index scans and nested-loop joins look cheaper, while a low value pushes the planner toward sequential scans and hash joins. The recommended setting is 50–75% of total system RAM when PostgreSQL is the primary workload, always larger than shared_buffers. Setting it too conservatively is the common failure mode, causing the planner to overprice index scans against data that is actually in memory.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://postgr.es/p/9mB>

## Similar posts on daily.dev

- [All Your GUCs in a Row: dynamic\_shared\_memory\_type](https://daily.dev/posts/all-your-gucs-in-a-row-dynamic-shared-memory-type-evjchcwss) · Planet PostgreSQL · 0 upvotes · 0 comments

---

Tags: [#postgresql](https://daily.dev/tags/postgresql)

[View this post on daily.dev](https://daily.dev/posts/all-your-gucs-in-a-row-effective-cache-size-7o5w3bmms)
