Обсуждение: 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"