Обсуждение: autovacuum on updated rows
I am using new postgres 8.1 and also trying out the integrated autovacuum. I have a concern.
I have a table where I perform an update on a row every 10 seconds. The table is VERY small. Hardly any INSERTS, no DELETES, and a ton of UPDATES.
adbs_db=# select count(*) from volumes;
count
-------
7
(1 row)
count
-------
7
(1 row)
I am looking at the file sizes that correspond to this table and its indeces. They are growing -- I think I understand why -- dead rows are occuring on an UPDATE. But what I don't understand is why autovacuum has not kicked in-- I have kept the default values on autovacuum.
In about 50 minutes' time, the table itself has grown 2MB, and each index has grown by about 1MB
Will autovacuum eventually run on this table???? What rows/columns does autovacuum look at to determine when to work on a table? I'd like to look at those rows, too.
Thanks!!
Steve
adbs_db=# \d volumes
Table "public.volumes"
Column | Type | Modifiers
------------------+------------------------+--------------------
label | character varying(128) | not null
imported | boolean | not null
closed | boolean | not null
active | boolean | not null
online | boolean | not null
offline | boolean | not null
archiver_name | character varying(32) | not null
environment_name | character varying(32) | not null
curr_size | bigint | not null default 0
vol_num | integer | not null
start_time | integer |
stop_time | integer |
Indexes:
"volumes_i1" unique, btree (label)
"volumes_i2" btree (environment_name)
Table "public.volumes"
Column | Type | Modifiers
------------------+------------------------+--------------------
label | character varying(128) | not null
imported | boolean | not null
closed | boolean | not null
active | boolean | not null
online | boolean | not null
offline | boolean | not null
archiver_name | character varying(32) | not null
environment_name | character varying(32) | not null
curr_size | bigint | not null default 0
vol_num | integer | not null
start_time | integer |
stop_time | integer |
Indexes:
"volumes_i1" unique, btree (label)
"volumes_i2" btree (environment_name)
Yahoo! FareChase - Search multiple travel sites in one click.
On 11/11/05, Stephen Byers <stephenabyers@yahoo.com> wrote: > I am using new postgres 8.1 and also trying out the integrated autovacuum. > I have a concern. > > I have a table where I perform an update on a row every 10 seconds. The > table is VERY small. Hardly any INSERTS, no DELETES, and a ton of UPDATES. > > adbs_db=# select count(*) from volumes; > count > ------- > 7 > (1 row) > > > > > > I am looking at the file sizes that correspond to this table and its > indeces. They are growing -- I think I understand why -- dead rows are > occuring on an UPDATE. But what I don't understand is why autovacuum has > not kicked in-- I have kept the default values on autovacuum. > > i will assume you change #autovacuum=off for on in postgresql.conf you have to activet stats_stat_collector and stats_row_level too... here explains what factors are used for determining vacuum needs for tables: http://www.postgresql.org/docs/8.1/static/maintenance.html#AUTOVACUUM > > In about 50 minutes' time, the table itself has grown 2MB, and each index > has grown by about 1MB > > Will autovacuum eventually run on this table???? What rows/columns does > autovacuum look at to determine when to work on a table? I'd like to look > at those rows, too. > > Thanks!! > Steve > > > adbs_db=# \d volumes > Table "public.volumes" > Column | Type | Modifiers > ------------------+------------------------+-------------------- > label | character varying(128) | not null > imported | boolean | not null > closed | boolean | not null > active | boolean | not null > online | boolean | not null > offline | boolean | not null > archiver_name | character varying(32) | not null > environment_name | character varying(32) | not null > curr_size | bigint | not null default 0 > vol_num | integer | not null > start_time | integer | > stop_time | integer | > Indexes: > "volumes_i1" unique, btree (label) > "volumes_i2" btree (environment_name) > > -- Atentamente, Jaime Casanova (DBA: DataBase Aniquilator ;)
Stephen Byers <stephenabyers@yahoo.com> writes: > Will autovacuum eventually run on this table???? Um ... is autovacuum actually turned on? (It's not by default.) Check the pg_stat_ views to see if the updates are getting counted in the statistics for the table. regards, tom lane
Sorry for noise. It turns out that little pound sign in front bit me !!
#autovacuum = on
Tom Lane <tgl@sss.pgh.pa.us> wrote:
Tom Lane <tgl@sss.pgh.pa.us> wrote:
Stephen Byers writes:
> Will autovacuum eventually run on this table????
Um ... is autovacuum actually turned on? (It's not by default.)
Check the pg_stat_ views to see if the updates are getting counted in
the statistics for the table.
regards, tom lane
---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?
http://www.postgresql.org/docs/faq
Yahoo! FareChase - Search multiple travel sites in one click.
Stephen Byers wrote: > Sorry for noise. It turns out that little pound sign in front bit me !! > #autovacuum = on So, does it work after you activate it? Please note that there's a threshold in the number of tuples that will need to be modified for a vacuum operation to be launched. For such a small table you may want to lower the threshold a bit. See the docs on the pg_autovacuum system catalog, in the "internals" chapter. -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support