Re: Streaming I/O, vectored I/O (WIP)
Melanie Plageman <melanieplageman@gmail.com>
From: Melanie Plageman <melanieplageman@gmail.com>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>, Dilip Kumar <dilipbalaut@gmail.com>, Robert Haas <robertmhaas@gmail.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>, Andres Freund <andres@anarazel.de>
Date: 2024-03-27T20:43:41Z
Lists: pgsql-hackers
On Wed, Mar 27, 2024 at 10:11 AM Thomas Munro <thomas.munro@gmail.com> wrote: > > I got rid of "finished" (now represented by distance == 0, I was > removing branches and variables). I got rid of "started", which can > now be deduced (used for suppressing advice when you're calling > _next() because you need a block and we need to read it immediately), > see the function argument suppress_advice. I started rebasing the sequential scan streaming read user over this new version, and this change (finished now represented with distance == 0) made me realize that I'm not sure what to set distance to on rescan. For sequential scan, I added a little reset function to the streaming read API (read_stream_reset()) that just releases all the buffers. Previously, it set finished to true before releasing the buffers (to indicate it was done) and then set it back to false after. Now, I'll set distance to 0 before releasing the buffers and !0 after. I could just restore whatever value distance had before I set it to 0. Or I could set it to 1. But, thinking about it, are we sure we want to ramp up in the same way on rescans? Maybe we want to use some information from the previous scan to determine what to set distance to? Maybe I'm overcomplicating it... > Here is a new proposal for the names, updated in v10: > > read_stream_begin_relation() > read_stream_next_buffer() > void read_stream_end() Personally, I'm happy with these. - Melanie
Commits
-
Fix typos and incorrect type in read_stream.c
- 2ea4b2927722 17.0 landed
-
Use streaming I/O in pg_prewarm.
- 3a352df05e65 17.0 landed
-
Provide API for streaming relation data.
- b5a9b18cd0bc 17.0 landed
-
Provide vectored variant of ReadBuffer().
- 210622c60e1a 17.0 landed
-
Provide vectored variants of smgrread() and smgrwrite().
- 4908c5872059 17.0 landed
-
Provide multi-block smgrprefetch().
- b485ad7f07c8 17.0 landed
-
Provide vectored variants of FileRead() and FileWrite().
- 871fe4917e1e 17.0 landed
-
Provide helper for retrying partial vectored I/O.
- 0c6be59f5e34 17.0 landed
-
Optimize pg_readv/pg_pwritev single vector case.
- 15c9ac362993 17.0 landed
-
bufmgr: Support multiple in-progress IOs by using resowner
- 12f3867f5534 16.0 cited