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
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/c5315f4f44843c20ada876fdb0d0828795dfbdf5
Modified Files
--------------
contrib/pg_visibility/pg_visibility.c | 2 +-
src/backend/access/heap/visibilitymap.c | 18 +++++-------
src/backend/catalog/storage.c | 4 +--
src/backend/storage/freespace/freespace.c | 27 +++++++++--------
src/backend/storage/smgr/smgr.c | 49 +++++++++++++++++++++++--------
src/include/storage/smgr.h | 12 ++++----
6 files changed, 66 insertions(+), 46 deletions(-)