Обсуждение: pgsql: Cache smgrnblocks() results in recovery.
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(-)