Inbox (unsorted notes)
Interpreting buffers in analyze
Section titled “Interpreting buffers in analyze”Shared hit counters don’t necessarily correspond to sizes that would be read on a cold read (see this article).
The example given: an index scan within a nested loop will “hit” the block N (loop) times. I’m also wondering if this can happen with particularly scattered index scans (e.g. on updated_at where the entries are scattered all over the heap?)
Also noted from the Postgres docs (emphasis mine):
The buffer numbers displayed show the count of the non-distinct buffers hit, read, dirtied, and written for the given node and all of its child nodes.