Re: Logical decoding on standby
От | Craig Ringer |
---|---|
Тема | Re: Logical decoding on standby |
Дата | |
Msg-id | CAMsr+YFTeLrA4M9ThYRT8ve+imh+=J9ugCRhLsvZsQw9TZCUHw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Logical decoding on standby (Robert Haas <robertmhaas@gmail.com>) |
Ответы |
Re: Logical decoding on standby
|
Список | pgsql-hackers |
On 23 November 2016 at 03:55, Robert Haas <robertmhaas@gmail.com> wrote: > On Tue, Nov 22, 2016 at 1:49 AM, Craig Ringer <craig@2ndquadrant.com> wrote: >> On 22 November 2016 at 10:20, Craig Ringer <craig@2ndquadrant.com> wrote: >>> I'm currently looking at making detection of replay conflict with a >>> slot work by separating the current catalog_xmin into two effective >>> parts - the catalog_xmin currently needed by any known slots >>> (ProcArray->replication_slot_catalog_xmin, as now), and the oldest >>> actually valid catalog_xmin where we know we haven't removed anything >>> yet. >> >> OK, more detailed plan. >> >> The last checkpoint's oldestXid, and ShmemVariableCache's oldestXid, >> are already held down by ProcArray's catalog_xmin. But that doesn't >> mean we haven't removed newer tuples from specific relations and >> logged that in xl_heap_clean, etc, including catalogs or user >> catalogs, it only means the clog still exists for those XIDs. > > Really? (Note the double negative above). Yes, necessarily so. You can't look up xids older than the clog truncation threshold at oldestXid, per our discussion on txid_status() and traceable commit. But the tuples from that xact aren't guaranteed to exist in any given relation; vacuum uses vacuum_set_xid_limits(...) which calls GetOldestXmin(...); that in turn scans ProcArray to find the oldest xid any running xact cares about. It might bump it down further if there's a replication slot requirement or based on vacuum_defer_cleanup_age, but it doesn't care in the slightest about oldestXmin. oldestXmin cannot advance until vacuum has removed all tuples for that xid and advanced the database's datfrozenxid. But a given oldestXmin says nothing about which tuples, catalog or otherwise, still exist and are acessible. -- Craig Ringer http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training & Services
В списке pgsql-hackers по дате отправления: