Re: [Proposal] Fully WAL logged CREATE DATABASE - No Checkpoints
Andres Freund <andres@anarazel.de>
Hi, On 2022-08-07 09:24:40 +0530, Dilip Kumar wrote: > On Sat, Aug 6, 2022 at 9:36 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > > > > Dilip Kumar <dilipbalaut@gmail.com> writes: > > > On Fri, Aug 5, 2022 at 10:43 AM Dilip Kumar <dilipbalaut@gmail.com> wrote: > > >> Yeah maybe it is not necessary to close as these unowned smgr will > > >> automatically get closed on the transaction end. > > > > I do not think this is a great idea for the per-relation smgrs created > > during RelationCopyStorageUsingBuffer. Yeah, they'll be mopped up at > > transaction end, but that doesn't mean that creating possibly tens of > > thousands of transient smgrs isn't going to cause performance issues. I was assuming that the files would get reopened at the end of the transaction anyway, but it looks like that's not the case, unless wal_level=minimal. Hm. CreateAndCopyRelationData() calls RelationCreateStorage() with register_delete = false, which is ok because createdb_failure_callback will clean things up. But that's another thing that's not great for a routine with a general name... > Okay, so for that we can simply call smgrcloserellocator(rlocator); > before exiting the RelationCopyStorageUsingBuffer() right? Yea, I think so. > > I think RelationCopyStorageUsingBuffer needs to open and then close > > the smgrs it uses, which means that ReadBufferWithoutRelcache is not the > > appropriate API for it to use, either; need to go down another level. > > Not sure how going down another level would help, the whole point is > that we don't want to keep the reference of the smgr for a long time > especially in the loop which is interruptible. Yea, I'm not following either. Greetings, Andres Freund
Commits
-
When using the WAL-logged CREATE DATABASE strategy, bulk extend.
- 3e63e8462f31 16.0 landed
- 576bb0fc9342 15.0 landed
-
Avoid using a fake relcache entry to own an SmgrRelation.
- 1b94f8f232f6 15.0 landed
- 76733b399c49 16.0 landed
-
Fix data-corruption hazard in WAL-logged CREATE DATABASE.
- 692df425b688 16.0 landed
- 811203d4aff5 15.0 landed
-
initdb: When running CREATE DATABASE, use STRATEGY = WAL_COPY.
- ad43a413c4f7 15.0 landed
-
Simplify a needlessly-complicated regular expression.
- c6863b858291 15.0 landed
-
In 020_createdb.pl, change order of command-line arguments.
- 3d067c53b26d 15.0 landed
-
Add new block-by-block strategy for CREATE DATABASE.
- 9c08aea6a309 15.0 landed
-
Fix replay of create database records on standby
- 49d9cfc68bf4 15.0 cited
-
Refactor code for reading and writing relation map files.
- 39f0c4bd670c 15.0 landed
-
Replace RelationOpenSmgr() with RelationGetSmgr().
- f10f0ae420ee 15.0 cited
-
Refactor the fsync queue for wider use.
- 3eb77eba5a51 12.0 cited