autovacuum läuft nicht

Allgemeines zu PostgreSQL.

autovacuum läuft nicht

Beitragvon jao » Di 4. Mai 2010, 16:05

Hallo,
irgendwie läuft bei mir ein autovacuum nicht so, wie ich mir es vorstelle.
Hier sind die Einstellungen:
autovacuum | on
autovacuum_analyze_scale_factor | 0.1
autovacuum_analyze_threshold | 250
autovacuum_freeze_max_age | 200000000
autovacuum_naptime | 1h
stats_row_level | on
stats_start_collector | on
Ich habe heute in der Datenbank viele Updaes,inserts,deletes durchgeführt und ich sehe nirgendwo das ein autovacuum gelaufen ist. z.B select last_autoanalyze,last_autovacuum from pg_stat_user_tables gibt mir die Zeiten von 29.04 oder 03.05 aber nicht von heute.
Der Parameter autovacuum_naptime steht fuer 1 Stunde, also ich erwarte dann eine stündliche analyze bzw vacuum. Warum tut er nichts?
jao
Neuer Benutzer
 
Beiträge: 8
Registriert: Do 24. Apr 2008, 16:11

Beitragvon ads » Di 4. Mai 2010, 16:59

Viele Fragen, noch weniger Daten ...

Läuft Autovacuum überhaupt? (Prozessliste schauen, pg_stat_activity schauen)
Wie ist die komplette Ausgabe von:
Code: Alles auswählen
SELECT * FROM pg_stat_user_tables WHERE relname = 'deine Tabelle'


Oh, und autovacuum_naptime ist nur die Zeit, die nach einem kompletten Durchlauf bis zum Start in der nächsten Datenbank gewartet wird. Das hat nichts damit zu tun, wie häufig Autovacuum deine Datenbank besucht. Abgesehen davon: für ein System mit vielen Änderungen ist eine Stunde definitiv zu viel - weil jede Datenbank dann nach frühestens 3 Stunden wieder dran kommt.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support
ads
Erfahrener Benutzer
 
Beiträge: 4147
Registriert: Mi 8. Feb 2006, 11:58
Wohnort: MD

Beitragvon jao » Mi 5. Mai 2010, 10:54

ads hat geschrieben:Viele Fragen, noch weniger Daten ...

Läuft Autovacuum überhaupt? (Prozessliste schauen, pg_stat_activity schauen)
Wie ist die komplette Ausgabe von:
Code: Alles auswählen
SELECT * FROM pg_stat_user_tables WHERE relname = 'deine Tabelle'


Oh, und autovacuum_naptime ist nur die Zeit, die nach einem kompletten Durchlauf bis zum Start in der nächsten Datenbank gewartet wird. Das hat nichts damit zu tun, wie häufig Autovacuum deine Datenbank besucht. Abgesehen davon: für ein System mit vielen Änderungen ist eine Stunde definitiv zu viel - weil jede Datenbank dann nach frühestens 3 Stunden wieder dran kommt.



jao:
hier ist prozessliste per ps -ax
28657 ? Ss 0:00 postgres: logger process
28659 ? Ss 0:00 postgres: writer process
28660 ? Ss 0:00 postgres: stats collector process
28780 ? Ss 4:49 postgres: bfozl bfozl 10.99.24.27(48164) idle in transaction
Ausgabe von pg_stat_activity;
bfozl=> select * from pg_stat_activity;
datid | datname | procpid | usesysid | usename | current_query | waiting | query_start | backend_start | client_addr | client_port
-------+---------+---------+----------+---------+---------------------------------+---------+-------------------------------+-------------------------------+-------------+-------------
16600 | bfozl | 28768 | 16602 | bfozl | select * from pg_stat_activity; | f | 2010-05-05 10:28:26.61604+02 | 2010-05-05 10:14:50.609536+02 | | -1
16600 | bfozl | 28780 | 16602 | bfozl | <IDLE> in transaction | f | 2010-05-05 10:28:19.648345+02 | 2010-05-05 10:14:58.247106+02 | 10.99.24.27 | 48164
(2 rows)

Ich führe jetzt Operation "Daten löschen"
vor daten löschen
n_tup_ins | n_tup_upd | n_tup_del
--------------------------------+-----------+--------- -+----------+----------+---------------+-----------+-----------+-----------+-------------------------------+-------------------------------+-------------------------------+-------------------------------
pfpl_zug_bst | 2729534 | 69 | 581987
tfpl_zug_bst | 2885126 | 0 | 1885409
pfpl_wartebedingung | 6970381 | 1237993 | 1252844

nach Daten löschen
select * from pg_stat_user_tables where relname like 'pfpl_zug_bst';
relid | schemaname | relname | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | last_vacuum | last_autovacuum | last_analyze | last_autoanalyze
-------+------------+--------------+----------+--------------+----------+---------------+-----------+-----------+-----------+-------------------------------+-------------------------------+-------------------------------+-------------------------------
16715 | bfozl | pfpl_zug_bst | 4571 | 199015366 | 7471447 | 6940015 | 2780442 | 69 | 632895 | 2010-05-05 10:40:35.613572+02 | 2010-03-29 12:55:18.479142+02 | 2010-05-05 10:40:35.613572+02 | 2010-03-29 12:55:18.479142+02
(1 row)
select * from pg_stat_user_tables where relname like 'pfpl_wartebedingung';
relid | schemaname | relname | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | last_vacuum | last_autovacuum | last_analyze | last_autoanalyze
-------+------------+---------------------+----------+--------------+----------+---------------+-----------+-----------+-----------+-------------------------------+-------------------------------+-------------------------------+-------------------------------
16722 | bfozl | pfpl_wartebedingung | 2057 | 317532069 | 2263003 | 2330043 | 7086029 | 1237993 | 1368492 | 2010-05-04 10:40:33.826308+02 | 2010-05-03 13:39:23.150559+02 | 2010-05-04 10:40:33.826308+02 | 2010-05-03 13:39:23.150559+02


Differenz bei n_tup_del der Tabelle zug_bst vor und nach dem Löschen beträgt 50808
Differenz bei n_tup_del der Tabelle pfpl_wartebeidnung vor und nach dem Löschen beträgt 115648
Parameter autovacuum_analyze_threshold steht auf 50 und autovacuum_vacuum_threshold auf 100.

Manuelle vacuum analyze wurde gestern durchgeführt. Die Opertaion Löschen führe ich aber heute und wieder kein autovacuum
jao
Neuer Benutzer
 
Beiträge: 8
Registriert: Do 24. Apr 2008, 16:11

Beitragvon ads » Mi 5. Mai 2010, 10:58

Was sagt:

Code: Alles auswählen
SHOW autovacuum;
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support
ads
Erfahrener Benutzer
 
Beiträge: 4147
Registriert: Mi 8. Feb 2006, 11:58
Wohnort: MD

Beitragvon jao » Mi 5. Mai 2010, 11:35

ads hat geschrieben:Was sagt:

Code: Alles auswählen
SHOW autovacuum;


show autovacuum;
autovacuum
------------
on

show all;
autovacuum_analyze_scale_factor | 0.1
autovacuum_analyze_threshold | 50
autovacuum_freeze_max_age | 200000000
autovacuum_naptime | 1h
autovacuum_vacuum_cost_delay | -1
autovacuum_vacuum_cost_limit | -1
autovacuum_vacuum_scale_factor | 0.2
autovacuum_vacuum_threshold | 100
jao
Neuer Benutzer
 
Beiträge: 8
Registriert: Do 24. Apr 2008, 16:11

Beitragvon ads » Mi 5. Mai 2010, 11:40

Ich sehe aber keinen Autovacuum Prozess in deiner Prozessliste:
Code: Alles auswählen
postgres  2455  0.0  0.0  45676  1388 ?        Ss   Apr30   1:12  \_ postgres: autovacuum launcher process
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support
ads
Erfahrener Benutzer
 
Beiträge: 4147
Registriert: Mi 8. Feb 2006, 11:58
Wohnort: MD

Beitragvon jao » Mi 5. Mai 2010, 12:19

ads hat geschrieben:Ich sehe aber keinen Autovacuum Prozess in deiner Prozessliste:
Code: Alles auswählen
postgres  2455  0.0  0.0  45676  1388 ?        Ss   Apr30   1:12  \_ postgres: autovacuum launcher process


Hast du Recht! Der ist nicht da, aber warum?
Die Parameter sind doch alle gesetzt.
jao
Neuer Benutzer
 
Beiträge: 8
Registriert: Do 24. Apr 2008, 16:11

Beitragvon jao » Mi 5. Mai 2010, 14:15

jao hat geschrieben:Hast du Recht! Der ist nicht da, aber warum?
Die Parameter sind doch alle gesetzt.


Wobei ich denke, den autovacuum launcher process läuft auch nicht permanent, sondern den sieht man nun dann wenn der auch was tut.
jao
Neuer Benutzer
 
Beiträge: 8
Registriert: Do 24. Apr 2008, 16:11

Beitragvon ads » Mi 5. Mai 2010, 14:31

Dann siehst du noch ein paar Worker Prozesse ...
Keine Ahnung, warum der nicht läuft. Was steht im Log dazu?
Ev. das Logging für Autovacuum mal hochdrehen.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support
ads
Erfahrener Benutzer
 
Beiträge: 4147
Registriert: Mi 8. Feb 2006, 11:58
Wohnort: MD


Zurück zu Allgemeines

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste