Commits on Aug 22, 2026
-
Add storage I/O tracking to 'IO' option
The 'BUFFERS' option currently indicates whether a block hit the shared buffer, but does not distinguish between a cache hit in the OS cache or a storage I/O operation. While shared buffers and OS cache offer similar performance, storage I/O is significantly slower in comparison in general. By measuring the numbers of storage I/O read and write, we can better identify if storage I/O is a bottleneck in performance. This patch enables to track storage I/O usage by calling getrusage(2) at both the planning and execution phase start and end points. A more granular approach as well as current BUFFERS option(tracking at each plan node) was considered but found to be impractical due to the high performance cost of frequent getrusage() calls. Note that no output is shown when io_method=worker, since asynchronous workers handle I/O for multiple processes, and isolating the EXPLAIN target's I/O is difficult. TODO: I believe this information is mainly useful when used in auto_explain. I'm going to implement it if this patch is merged.