>>>>> "Tom" == Tom Lane <t...@sss.pgh.pa.us> writes:
Tom> Have we given up on the angle of "prevent OldestXmin from Tom> retreating"? I haven't, and I'm thinking about it, but I don't have an immediate solution. Thinking-out-loud mode: 1) we could store minimum values for OldestXmin for each database in some kind of shared-memory structure. Downside is that we can't easily make this fixed-size, since we don't know how many DBs there are - we can't size it based on connections since we need to be able to track values for dbs with no currently active connections. (Or do we need to track it across restarts? maybe we do, to deal with replication slaves without slots, or changes in parameters) 2) in-place updates of a new column in pg_database? and a control file field for the global values? not back-patchable, but would it work going forward? 3) there was the previous suggestion to store it per-table in the main table's reloptions and inplace-update that; this isn't impossible, but it would be fiddly to do because toast-table-only vacuums would need to locate the main table, and lock order issues might get interesting. (Maybe it would be sneakier to store it in the toast table's otherwise-unused reloptions, and have vacuum/create index on the main table consult that? This assumes that we only care about the issue when dealing with toast tables) 4) something else?? -- Andrew (irc:RhodiumToad)