Re: WIP: WAL prefetch (another approach)
Thomas Munro <thomas.munro@gmail.com>
On Wed, Apr 8, 2020 at 4:24 AM Thomas Munro <thomas.munro@gmail.com> wrote: > Thanks for all that feedback. It's been a strange couple of weeks, > but I finally have a new version that addresses most of that feedback > (but punts on a couple of suggestions for later development, due to > lack of time). Here's an executive summary of an off-list chat with Andres: * he withdrew his objection to the new definition of GetWalRcvWriteRecPtr() based on my argument that any external code will fail to compile anyway * he doesn't like the naive code that detects sequential access and skips prefetching; I agreed to rip it out for now and revisit if/when we have better evidence that that's worth bothering with; the code path that does that and the pg_stat_recovery_prefetch.skip_seq counter will remain, but be used only to skip prefetching of repeated access to the *same* block for now * he gave some feedback on the read_local_xlog_page() modifications: I probably need to reconsider the change to logical.c that passes NULL instead of cxt to the read_page callback; and the switch statement in read_local_xlog_page() probably should have a case for the preexisting mode * he +1s the plan to commit with the feature enabled, and revisit before release * he thinks the idea of a variant of ReadBuffer() that takes a PrefetchBufferResult (as sketched by the v6 0006 patch) broadly makes sense as a stepping stone towards his asychronous I/O proposal, but there's no point in committing something like 0006 without a user I'm going to go and commit the first few patches in this series, and come back in a bit with a new version of the main patch to fix the above and a compiler warning reported by cfbot.
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix recovery_prefetch docs.
- dafae9707ab7 15.0 landed
-
Prefetch data referenced by the WAL, take II.
- 5dc0418fab28 15.0 landed
-
Add circular WAL decoding buffer, take II.
- 3f1ce973467a 15.0 landed
-
Fix generation of ./INSTALL for the distribution tarball
- 45aa88fe1d40 14.0 cited
-
Revert recovery prefetching feature.
- c2dc19342e05 14.0 landed
-
Sync guc.c and postgresql.conf.sample with the SGML docs.
- a55a98477b69 14.0 cited
-
Add information of total data processed to replication slot stats.
- f5fc2f5b23d1 14.0 cited
-
Doc: Review for "Optionally prefetch referenced data in recovery."
- dc88460c24ed 14.0 landed
-
Add circular WAL decoding buffer.
- f003d9f8721b 14.0 landed
-
Optionally prefetch referenced data in recovery.
- 1d257577e08d 14.0 landed
-
Remove read_page callback from XLogReader.
- 323cbe7c7ddc 14.0 cited
-
Provide ReadRecentBuffer() to re-pin buffers by ID.
- 2f27f8c51149 14.0 landed
-
Provide recovery_init_sync_method=syncfs.
- 61752afb2640 14.0 cited
-
Mark factorial operator, and postfix operators in general, as deprecated.
- 6ca547cf75ef 14.0 cited
-
Rationalize GetWalRcv{Write,Flush}RecPtr().
- d140f2f3e225 13.0 landed
-
Support PrefetchBuffer() in recovery.
- 3985b600f57d 13.0 landed
-
Prevent hard failures of standbys caused by recycled WAL segments
- 70b4f82a4b5c 11.0 cited