Re: BUG #5946: Long exclusive lock taken by vacuum (not full)
От | Robert Haas |
---|---|
Тема | Re: BUG #5946: Long exclusive lock taken by vacuum (not full) |
Дата | |
Msg-id | AANLkTikHhoBB2SvGnz7-o2cJe4F4ThxhPB5JzOaaGDrQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: BUG #5946: Long exclusive lock taken by vacuum (not full) (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-bugs |
On Fri, Mar 25, 2011 at 5:56 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Christopher Browne <cbbrowne@gmail.com> writes: >> What seems natural-ish to me might include: >> - Stomping a bit on the FSM replacement to make sure nobody's going to >> be writing to the later extensions; >> - Watching free space during the process so the "first" extension gets >> re-opened up if the free space in the much earlier parts of the table >> (e.g. - that are not planned to be dropped off) is running out. > > You seem to be thinking only about the possibility that somebody would > try to write a new tuple into the space-to-be-freed. =A0The problem that > necessitates use of AccessExclusiveLock is that somebody could be doing > a seqscan that tries to *read* the blocks that are about to be truncated > away. =A0We can't really improve matters much here unless we think of a > way to fix that. =A0It would be okay if the scan just ignored blocks it > failed to read, but how do you distinguish the case from a filesystem > error that really should be reported? It's struck me a number of times that it would make some things simpler if we were able to maintain some state in shared memory about the tables people were using - for example, in this case, we could cache the table size, or the fact that vacuum has just truncated away N blocks, or, uh, something. *waves hands* But it's hard to know how such an area could reasonably be sized or managed. --=20 Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
В списке pgsql-bugs по дате отправления: