pgsql: Cache smgrnblocks() results in recovery.

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

pgsql: Cache smgrnblocks() results in recovery.

Thomas Munro-4
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(-)