Robert Haas wrote:
> On Wed, Aug 11, 2010 at 9:42 PM, Bruce Momjian <bruce@momjian.us> wrote:
> > This confused me. ?If we are assuing the data is in
> > effective_cache_size, why are we adding sequential/random page cost to
> > the query cost routines?
>
> See the comments for index_pages_fetched(). We basically assume that
> all data starts uncached at the beginning of each query - in fact,
> each plan node. effective_cache_size only measures the chances that
> if we hit the same block again later in the execution of something
> like a nested-loop-with-inner-indexscan, it'll still be in cache.
>
> It's an extremely weak knob, and unless you have tables or indices
> that are larger than RAM, the only mistake you can make is setting it
> too low.
The attached patch documents that there is no assumption that data
remains in the disk cache between queries. I thought this information
might be helpful.
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ It's impossible for everything to be true. +
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 77cacdd..520170b 100644
*** a/doc/src/sgml/config.sgml
--- b/doc/src/sgml/config.sgml
*************** SET ENABLE_SEQSCAN TO OFF;
*** 2424,2430 ****
space. This parameter has no effect on the size of shared
memory allocated by <productname>PostgreSQL</productname>, nor
does it reserve kernel disk cache; it is used only for estimation
! purposes. The default is 128 megabytes (<literal>128MB</>).
</para>
</listitem>
</varlistentry>
--- 2424,2432 ----
space. This parameter has no effect on the size of shared
memory allocated by <productname>PostgreSQL</productname>, nor
does it reserve kernel disk cache; it is used only for estimation
! purposes. The system also does not assume data remains in
! the disk cache between queries. The default is 128 megabytes
! (<literal>128MB</>).
</para>
</listitem>
</varlistentry>