Diagnose I/O behavior with pg_stat_io
A single cache hit ratio hides which part of the workload is doing the damage. pg_stat_io splits it by context so you can attribute bulkread scans separately from normal access.
Problem
What you're actually looking at
The symptom as it shows up on a real server.
The classic buffer-hit-ratio query gives you one number for the whole cluster, which is close to useless when a nightly report and an OLTP path share the same buffer pool. pg_stat_io breaks the same counters down by backend type, object and access context, so you can attribute the reads.
Meridian runs a modest shared_buffers pool. After a batch of large scans the overall hit ratio drops and the OLTP path feels slower, but nobody can point at the cause.
Simple terms
The classic "cache hit ratio" gives you one number for the whole server, which is nearly useless when a nightly report and your live traffic share the same memory pool, the report's giant scans drag the average down and hide the real picture. pg_stat_io breaks the same read and write counters down by what was doing the I/O and why (a normal query, a bulk read, a background worker), so you can point at the actual culprit instead of guessing.
Full runbook for this incident
- The full identify checklist, the exact signals that tell you it's this incident
- Every diagnostic query; lab output is attached only to the steps we actually captured
- The resolution path and the pitfalls that make it worse
- Mitigation steps to stop it recurring, plus a verify-you're-done query
Card required. Cancel before day 7 and you are not charged.
More in this category
Other Observability runbooks
Neighbouring incidents that share the same diagnostic surface.
Need the full procedure?
Pro runbooks finish the incident path
Free runbooks teach the shape. Pro opens the full step transcript, edge cases, and prevention depth.