Re: Logical decoding on standby
От | Craig Ringer |
---|---|
Тема | Re: Logical decoding on standby |
Дата | |
Msg-id | CAMsr+YEa-OdwLQHzY9O8-fMUyE5-k6VWXi2irWW5CTDmHz4ykg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Logical decoding on standby (Craig Ringer <craig@2ndquadrant.com>) |
Ответы |
Re: Logical decoding on standby
|
Список | pgsql-hackers |
On 30 March 2017 at 11:34, Craig Ringer <craig@2ndquadrant.com> wrote: > On 29 March 2017 at 23:13, Simon Riggs <simon.riggs@2ndquadrant.com> wrote: >> On 29 March 2017 at 10:17, Craig Ringer <craig@2ndquadrant.com> wrote: >>> On 29 March 2017 at 16:44, Craig Ringer <craig@2ndquadrant.com> wrote: >>> >>>> * Split oldestCatalogXmin tracking into separate patch >>> >>> Regarding this, Simon raised concerns about xlog volume here. >>> >>> It's pretty negligible. >>> >>> We only write a new record when a vacuum runs after catalog_xmin >>> advances on the slot with the currently-lowest catalog_xmin (or, if >>> vacuum doesn't run reasonably soon, when the bgworker next looks). >> >> I'd prefer to slow things down a little, not be so eager. >> >> If we hold back update of the catalog_xmin until when we run >> GetRunningTransactionData() we wouldn't need to produce any WAL >> records at all AND we wouldn't need to have VACUUM do >> UpdateOldestCatalogXmin(). Bgwriter wouldn't need to perform an extra >> task. >> >> That would also make this patch about half the length it is. >> >> Let me know what you think. > > Good idea. > > We can always add a heuristic later to make xl_running_xacts get > emitted more often at high transaction rates if it's necessary. > > Patch coming soon. Attached. A bit fiddlier than expected, but I like the result more. In the process I identified an issue with both the prior patch and this one where we don't check slot validity for slots that existed on standby prior to promotion of standby to master. We were just assuming that being the master was good enough, since it controls replication_slot_catalog_xmin, but that's not true for pre-existing slots. Fixed by forcing update of the persistent safe catalog xmin after the first slot is created on the master - which is now done by doing an immediate LogStandbySnapshot() after assigning the slot's catalog_xmin. -- Craig Ringer http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Вложения
В списке pgsql-hackers по дате отправления: