Re: Re: BUG #13685: Archiving while idle every archive_timeout with wal_level hot_standby
От | Michael Paquier |
---|---|
Тема | Re: Re: BUG #13685: Archiving while idle every archive_timeout with wal_level hot_standby |
Дата | |
Msg-id | CAB7nPqQDZkhjZeR4f1Bfn=rLHD_auD57ZLUs10s=CwuCSybENQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Re: BUG #13685: Archiving while idle every archive_timeout with wal_level hot_standby (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: Re: BUG #13685: Archiving while idle every
archive_timeout with wal_level hot_standby
|
Список | pgsql-hackers |
On Sat, Nov 7, 2015 at 1:52 AM, Andres Freund <andres@anarazel.de> wrote: > On 2015-11-06 11:42:56 -0500, Robert Haas wrote: >> On Fri, Nov 6, 2015 at 2:47 AM, Michael Paquier >> <michael.paquier@gmail.com> wrote: >> > I have as well thought a bit about adding a space-related constraint >> > on the standby snapshot generated by the bgwriter, so as to not rely >> > entirely on the interval of 15s. I finished with the attached that >> > uses a check based on CheckPointSegments / 8 to be sure that at least >> > this number of segments has been generated since the last checkpoint >> > before logging a new snapshot. I guess that's less brittle than the >> > last patch. Thoughts? >> >> I can't see why that would be a good idea. My understanding is that >> the logical decoding code needs to get those messages pretty >> regularly, and I don't see why that need would be reduced on systems >> where CheckPointSegments is large. > > Precisely. > > > What I'm thinking of right now is a marker somewhere in shared memory, > that tells whether anything worthwhile has happened since the last > determination of the redo pointer. Where standby snapshots don't > count. That seems like it'd be to maintain going forward than doing > precise size calculations like CreateCheckPoint() already does, and > would additionally need to handle its own standby snapshot, not to speak > of the background ones. I thought about something like that at some point by saving a minimum activity pointer in XLogCtl, updated each time a segment was forcibly switched or after inserting a checkpoint record. Then the bgwriter looked at if the current insert position matched this minimum activity pointer, skipping LogStandbySnapshot if both positions match. Does this match your line of thoughts? > Seems like it'd be doable in ReserveXLogInsertLocation(). > Whether it's actually worthwhile I'm not all that sure tho. I am not sure doing extra work there is a good idea. There are already 5 instructions within the spinlock section, and this code path is already high in many profiles for busy systems. -- Michael
В списке pgsql-hackers по дате отправления: