2017-01-13 4 views
3

Ist es möglich? Ich habe eine Tabelle mit schnell wachsenden toten Tupeln, aber ich kann während des Tages keine Aktualisierungen sehen oder löschen, sondern nur einfügen und auswählen. Autovacuum läuft alle 10 Minuten, das n_dead_tup geht fast auf Null und beginnt erneut zu wachsen.Dead Tuples ohne Updates/Deletes

Es gibt einen Löschvorgang in dieser Tabelle, um Zeilen mit Datum vor 15 Tagen zu löschen, die nur einmal pro Tag ausgeführt werden (dreimal geprüft, was nur einmal pro Tag erfolgt).

Im Rest des Tages laufen nur Einfügungen und Selects auf dieser Tabelle.

+3

'INSERT' +' ROLLBACK' erzeugt auch ein totes Tupel –

Antwort

1

Ein fehlgeschlagener Versuch, Daten einzufügen, kann zu toten Tupeln führen. Beispiel:

create table test(id serial primary key, str text); 

insert into test (str) values ('abc'); 

select pg_stat_get_dead_tuples('test'::regclass); 

pg_stat_get_dead_tuples 
------------------------- 
         0 
(1 row) 

insert into test values (1, 'def'); 

ERROR: duplicate key value violates unique constraint "test_pkey" 
DETAIL: Key (id)=(1) already exists. 

select pg_stat_get_dead_tuples('test'::regclass); 

pg_stat_get_dead_tuples 
------------------------- 
         1 
(1 row) 

Dies gilt auch für die aufgrund von Rollback abgebrochenen Einsätze.