Cache smgrnblocks() results in recovery.

Thomas Munro <tmunro@postgresql.org>

Commit: c5315f4f44843c20ada876fdb0d0828795dfbdf5
Author: Thomas Munro <tmunro@postgresql.org>
Date: 2020-07-31T02:29:52Z
Releases: 14.0
Cache smgrnblocks() results in recovery.

Avoid repeatedly calling lseek(SEEK_END) during recovery by caching
the size of each fork.  For now, we can't use the same technique in
other processes, because we lack a shared invalidation mechanism.

Do this by generalizing the pre-existing caching used by FSM and VM
to support all forks.

Discussion: https://postgr.es/m/CAEepm%3D3SSw-Ty1DFcK%3D1rU-K6GSzYzfdD4d%2BZwapdN7dTa6%3DnQ%40mail.gmail.com

Files

Discussion