Обсуждение: update, truncate and vacuum

Поиск
Список
Период
Сортировка

update, truncate and vacuum

От
Scott Feldstein
Дата:
Hi,
I have a couple questions about how update, truncate and vacuum would
work together.

1) If I update a table foo (id int, value numeric (20, 6))
with
update foo set value = 100 where id = 1

Would a vacuum be necessary after this type of operation since the
updated value is a numeric? (as opposed to a sql type where its size
could potentially change i.e varchar)

2) After several updates/deletes to a table, if I truncate it, would
it be necessary to run vacuum in order to reclaim the space?

thanks,
Scott

Re: update, truncate and vacuum

От
"Luke Lonergan"
Дата:

1) Yes

All rows are treated the same, there are no in place updates.

2) No

Truncate recreates the object as a new one, releasing the space held by the old one.

- Luke

Msg is shrt cuz m on ma treo

 -----Original Message-----
From:   Scott Feldstein [mailto:scott.feldstein@hyperic.com]
Sent:   Thursday, July 26, 2007 06:44 PM Eastern Standard Time
To:     pgsql-performance@postgresql.org
Subject:        [PERFORM] update, truncate and vacuum

Hi,
I have a couple questions about how update, truncate and vacuum would 
work together.

1) If I update a table foo (id int, value numeric (20, 6))
with
update foo set value = 100 where id = 1

Would a vacuum be necessary after this type of operation since the 
updated value is a numeric? (as opposed to a sql type where its size 
could potentially change i.e varchar)

2) After several updates/deletes to a table, if I truncate it, would 
it be necessary to run vacuum in order to reclaim the space?

thanks,
Scott

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to majordomo@postgresql.org so that your
       message can get through to the mailing list cleanly

Re: update, truncate and vacuum

От
"Dave Dutcher"
Дата:
> From: Scott Feldstein
> Subject: [PERFORM] update, truncate and vacuum
>
> Hi,
> I have a couple questions about how update, truncate and
> vacuum would work together.
>
> 1) If I update a table foo (id int, value numeric (20, 6))
> with update foo set value = 100 where id = 1
>
> Would a vacuum be necessary after this type of operation
> since the updated value is a numeric? (as opposed to a sql
> type where its size could potentially change i.e varchar)

Yes a vacuum is still necessary.  The type doesn't really matter.  Postgres
effectively does a delete and insert on all updates.


> 2) After several updates/deletes to a table, if I truncate
> it, would it be necessary to run vacuum in order to reclaim the space?

No a vacuum is not necessary after a truncate because the whole data file is
deleted once a truncate commits.  There aren't any dead rows because there
aren't any rows.

Dave