| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | SBob <sbob(at)quadratum-braccas(dot)com> |
| Cc: | "Rui DeSousa" <rui(at)crazybean(dot)net>, Keith <keith(at)keithf4(dot)com>, pgsql-admin <pgsql-admin(at)postgresql(dot)org> |
| Subject: | Re: Vacuum not cleaning up rows. |
| Date: | 2019-06-21 14:08:22 |
| Message-ID: | 29887.1561126102@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-admin |
SBob <sbob(at)quadratum-braccas(dot)com> writes:
> I do see older backend_start values (from around 6 hours ago). However I am confused as to how a connection to one database in a cluster can prevenr vacuum from cleaning up row versions in a table within another database. How is that possible since onle one database has access to this table?
Because the snapshot-horizon calculations are done system-wide.
We can't just lobotomize them to only consider the current DB,
because that would result in wrong row-cleanup decisions for shared
catalogs.
There are some attempts to refine that when vacuuming a non-shared table,
but that can only go so far given the limited amount of state that
backends expose about this. Doing better would require expending
more effort in transaction start/transaction stop/snapshot creation,
which are hot spots so it hasn't seemed like it'd be a good tradeoff.
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | SBob | 2019-06-21 14:11:52 | Re: Vacuum not cleaning up rows. |
| Previous Message | SBob | 2019-06-21 13:51:09 | Re: Vacuum not cleaning up rows. |