mirror of
https://github.com/postgres/postgres.git
synced 2025-10-27 00:12:01 +03:00
Scan the buffer pool just once, not once per fork, during relation drop.
This provides a speedup of about 4X when NBuffers is large enough. There is also a useful reduction in sinval traffic, since we only do CacheInvalidateSmgr() once not once per fork. Simon Riggs, reviewed and somewhat revised by Tom Lane
This commit is contained in:
@@ -210,6 +210,7 @@ extern BufferDesc *LocalBufferAlloc(SMgrRelation smgr, ForkNumber forkNum,
|
||||
extern void MarkLocalBufferDirty(Buffer buffer);
|
||||
extern void DropRelFileNodeLocalBuffers(RelFileNode rnode, ForkNumber forkNum,
|
||||
BlockNumber firstDelBlock);
|
||||
extern void DropRelFileNodeAllLocalBuffers(RelFileNode rnode);
|
||||
extern void AtEOXact_LocalBuffers(bool isCommit);
|
||||
|
||||
#endif /* BUFMGR_INTERNALS_H */
|
||||
|
||||
@@ -188,6 +188,7 @@ extern void FlushRelationBuffers(Relation rel);
|
||||
extern void FlushDatabaseBuffers(Oid dbid);
|
||||
extern void DropRelFileNodeBuffers(RelFileNodeBackend rnode,
|
||||
ForkNumber forkNum, BlockNumber firstDelBlock);
|
||||
extern void DropRelFileNodeAllBuffers(RelFileNodeBackend rnode);
|
||||
extern void DropDatabaseBuffers(Oid dbid);
|
||||
|
||||
#define RelationGetNumberOfBlocks(reln) \
|
||||
|
||||
@@ -80,8 +80,8 @@ extern void smgrclose(SMgrRelation reln);
|
||||
extern void smgrcloseall(void);
|
||||
extern void smgrclosenode(RelFileNodeBackend rnode);
|
||||
extern void smgrcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo);
|
||||
extern void smgrdounlink(SMgrRelation reln, ForkNumber forknum,
|
||||
bool isRedo);
|
||||
extern void smgrdounlink(SMgrRelation reln, bool isRedo);
|
||||
extern void smgrdounlinkfork(SMgrRelation reln, ForkNumber forknum, bool isRedo);
|
||||
extern void smgrextend(SMgrRelation reln, ForkNumber forknum,
|
||||
BlockNumber blocknum, char *buffer, bool skipFsync);
|
||||
extern void smgrprefetch(SMgrRelation reln, ForkNumber forknum,
|
||||
|
||||
Reference in New Issue
Block a user