Обсуждение: Can autovac try to lock multiple tables at once?
$subject would be bad because of potential deadlocks against other
transactions that might try to exclusive-lock more than one table.
We should be OK for actual vacuum operations, but I think that if
autovac chooses to just ANALYZE multiple tables, it will do it in
one transaction and accumulate locks. Probably the use_own_xacts
logic in vacuum() ought to special-case IsAutoVacuumWorkerProcess.
regards, tom lane
Tom Lane wrote: > $subject would be bad because of potential deadlocks against other > transactions that might try to exclusive-lock more than one table. > > We should be OK for actual vacuum operations, but I think that if > autovac chooses to just ANALYZE multiple tables, it will do it in > one transaction and accumulate locks. Probably the use_own_xacts > logic in vacuum() ought to special-case IsAutoVacuumWorkerProcess. Sure, it can do that. I think it's easy enough to correct this problem; see attached patch. Should this be backpatched? Earlier releases also fall foul of this problem AFAICT. -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support
Вложения
Alvaro Herrera <alvherre@commandprompt.com> writes:
> Sure, it can do that. I think it's easy enough to correct this problem;
> see attached patch. Should this be backpatched? Earlier releases also
> fall foul of this problem AFAICT.
Yeah, because what made me think about it was a gripe from an 8.2
user ... maybe this wasn't his problem, but it could be.
regards, tom lane
Tom Lane wrote: > Alvaro Herrera <alvherre@commandprompt.com> writes: > > Sure, it can do that. I think it's easy enough to correct this problem; > > see attached patch. Should this be backpatched? Earlier releases also > > fall foul of this problem AFAICT. > > Yeah, because what made me think about it was a gripe from an 8.2 > user ... maybe this wasn't his problem, but it could be. Backpatched all the way back to 8.1. -- Alvaro Herrera Developer, http://www.PostgreSQL.org/ Y dijo Dios: "Que sea Satanás, para que la gente no me culpe de todo a mí." "Y que hayan abogados, para que la gente no culpe de todo a Satanás"