Alvaro Herrera <alvherre(at)commandprompt(dot)com> writes:
> We already do something similar for page deletions. Empty pages are not
> deleted right away, but they are marked with BTP_DEAD, and then deleted
> on a subsequent vacuum. Or something like that, I don't remember the
> exact details.
Right, and the reason for that is exactly that there might be a
concurrent indexscan already "in flight" to the newly-dead page.
We must wait to recycle the page until we are certain no such scans
It doesn't matter whether a concurrent indexscan visits the dead
page or not, *because it's empty* and so there's nothing to miss.
So there's no race condition. But if you try to move valid data
across pages then there is a race condition.
regards, tom lane
In response to
pgsql-hackers by date
|Next:||From: Bruce Momjian||Date: 2005-12-22 20:14:09|
|Subject: Re: Automatic function replanning|
|Previous:||From: Simon Riggs||Date: 2005-12-22 20:10:54|
|Subject: Re: WAL bypass for INSERT, UPDATE and DELETE?|