!1161 增加nblock cache,降低smgrnblock造成的系统负载高

Merge pull request !1161 from 邓旭玥/efix_0804
This commit is contained in:
opengauss-bot
2021-08-06 03:03:52 +00:00
committed by Gitee
2 changed files with 10 additions and 2 deletions

View File

@ -1764,8 +1764,16 @@ Buffer ReadBuffer_common_for_localbuf(RelFileNode rnode, char relpersistence, Fo
* should return that the tuple does not exist without error reporting.
*/
else if (RecoveryInProgress()) {
if (blockNum >= smgrnblocks(smgr, forkNum))
BlockNumber totalBlkNum = smgrnblocks_cached(smgr, forkNum);
/* Update cached blocks */
if (totalBlkNum == InvalidBlockNumber || blockNum >= totalBlkNum) {
totalBlkNum = smgrnblocks(smgr, forkNum);
}
if (blockNum >= totalBlkNum) {
return InvalidBuffer;
}
}
#endif

View File

@ -60,7 +60,7 @@ typedef struct SMgrRelationData {
BlockNumber smgr_targblock; /* current insertion target block */
BlockNumber smgr_fsm_nblocks; /* last known size of fsm fork */
BlockNumber smgr_vm_nblocks; /* last known size of vm fork */
BlockNumber smgr_cached_nblocks; /* last known size of main fork*/
BlockNumber smgr_cached_nblocks; /* last known size of main fork */
int smgr_bcmarry_size;
BlockNumber* smgr_bcm_nblocks; /* last known size of bcm fork */