Re: logtape.c stats don't account for unused "prefetched" block numbers
Jeff Davis <pgsql@j-davis.com>
From: Jeff Davis <pgsql@j-davis.com>
To: Peter Geoghegan <pg@bowt.ie>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2020-09-14T22:20:02Z
Lists: pgsql-hackers
On Mon, 2020-09-14 at 14:24 -0700, Peter Geoghegan wrote: > On Fri, Sep 11, 2020 at 6:37 PM Peter Geoghegan <pg@bowt.ie> wrote: > > It would be awkward if we just used nBlocksWritten within > > LogicalTapeSetBlocks() in the case where we didn't preallocate (or > > in > > all cases). Not entirely sure what to do about that just yet. > > I guess that that's the logical thing to do, as in the attached > patch. Hi Peter, In the comment in the patch, you say: "In practice this probably doesn't matter because we'll be called after the flush anyway, but be tidy." By which I assume you mean that LogicalTapeRewindForRead() will be called before LogicalTapeSetBlocks(). If that's the intention of LogicalTapeSetBlocks(), should we just make it a requirement that there are no open write buffers for any tapes when it's called? Then we could just use nBlocksWritten in both cases, right? (Aside: HashAgg calls it before LogicalTapeRewindForRead(). That might be a mistake in HashAgg where it will keep the write buffers around longer than necessary. If I recall correctly, it was my intention to rewind for reading immediately after the batch was finished, which is why I made the read buffer lazily-allocated.) Regards, Jeff Davis
Commits
-
Change LogicalTapeSetBlocks() to use nBlocksWritten.
- 6e146a663536 13.0 landed
- c8aeaf3ab31e 14.0 landed
-
HashAgg: release write buffers sooner by rewinding tape.
- 42a46f5a76ec 13.0 landed
- 3bd35d4f516a 14.0 landed
-
logtape.c: do not preallocate for tapes when sorting
- 93106d71a18a 13.0 landed
- 075896496394 14.0 landed
-
Fix bogus MaxAllocSize check in logtape.c.
- 4a4f3bf983b4 13.0 landed
- 0852006a946a 14.0 landed
-
Avoid fragmentation of logical tapes when writing concurrently.
- 896ddf9b3cd7 13.0 cited
-
Logical Tape Set: use min heap for freelist.
- c02fdc922301 13.0 cited
-
Don't create "holes" in BufFiles, in the new logtape code.
- 7ac4a389a7db 10.0 cited