Re: Chunk Delete

Поиск
Список
Период
Сортировка
От Sam Mason
Тема Re: Chunk Delete
Дата
Msg-id 20071115140225.GB1955@frubble.xen.chris-lamb.co.uk
обсуждение исходный текст
Ответ на Re: Chunk Delete  ("Alexander Staubo" <alex@purefiction.net>)
Список pgsql-general
On Thu, Nov 15, 2007 at 02:46:09PM +0100, Alexander Staubo wrote:
> On 11/15/07, Abraham, Danny <danny_abraham@bmc.com> wrote:
> > With Oracle we do it with: delete ,tname>   where  <cond> and rownum < Y;
>
> You could create a temporary sequence:
>
>   create temporary sequence foo_seq;
>   delete from foos where nextval('foo_seq') < 50000;
>
> I'm not sure how fast nextval() is, even on temporary sequences; but
> it should be reasonably fast.

That's not going to do anything very useful after VACUUM has been run
will it?  VACUUM will leave lots of empty slots within a page, that
subsequent INSERTs will populate.  I suppose that you could cluster the
table first on some data column, and then do your delete trick.  But
If the OP really has got a billion rows they're not going to want to
cluster it very regularly.

This basically goes back to the fundamental issue that a relation has no
implicit order (it sounds as though Oracle had an implicit one, but that
assumption doesn't hold with PG or in general).

Maybe partitioning could help here.


  Sam

В списке pgsql-general по дате отправления:

Предыдущее
От: "Alexander Staubo"
Дата:
Сообщение: Re: Chunk Delete
Следующее
От: "Albe Laurenz"
Дата:
Сообщение: Re: Enforcing Join condition