Hi,
On 2023-11-30 18:51:35 -0500, Tom Lane wrote:
> On what grounds do you assert that? Operations on shared catalogs
> are visible across databases. Admittedly they can't be written by
> ordinary DML, and I'm not sure that we make any promises about DDL
> writes honoring serializability. But I'm unwilling to add
> "optimizations" that assume that that will never happen.
I'd say the issue is more that it's quite expensive to collect the
information. I tried in the past to make the xmin computation in
GetSnapshotData() be database specific, but it quickly shows in profiles, and
GetSnapshotData() unfortunately is really performance / scalability critical.
If that weren't the case, we could check a shared horizon for shared tables,
and a non-shared horizon otherwise.
In some cases we can compute a "narrower" horizon when it's worth the cost,
but quite often we lack the necessary data, because various backends have
stored the "global" xmin in the procarray.
Greetings,
Andres Freund