diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2012-06-07 17:42:27 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2012-06-07 17:43:11 -0400 |
commit | ece01aae479227d9836294b287d872c5a6146a11 (patch) | |
tree | c079ac4532474ccd3803f21a95ffb08fb8373dd9 /src/backend/access/transam/xact.c | |
parent | 5baf6da71701abcb76487d9de68f7d7dc6c365e9 (diff) |
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
Diffstat (limited to 'src/backend/access/transam/xact.c')
-rw-r--r-- | src/backend/access/transam/xact.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 49c14cb64c0..659b53524cd 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -4638,10 +4638,8 @@ xact_redo_commit_internal(TransactionId xid, XLogRecPtr lsn, ForkNumber fork; for (fork = 0; fork <= MAX_FORKNUM; fork++) - { XLogDropRelation(xnodes[i], fork); - smgrdounlink(srel, fork, true); - } + smgrdounlink(srel, true); smgrclose(srel); } @@ -4778,10 +4776,8 @@ xact_redo_abort(xl_xact_abort *xlrec, TransactionId xid) ForkNumber fork; for (fork = 0; fork <= MAX_FORKNUM; fork++) - { XLogDropRelation(xlrec->xnodes[i], fork); - smgrdounlink(srel, fork, true); - } + smgrdounlink(srel, true); smgrclose(srel); } } |