Die Gefahr, die in der Tötung autovacuum: VAKUUM-Abfragen (um zu verhindern, dass umlaufende)
Es ist ein autovacuum-Abfrage, die sehr lange dauert zu laufen und verhindern, ändern, Abfragen ausführen.
Welche Gefahr besteht, ist das töten dieser autovacuum-Prozess, bevor es fertig ist?
PID ABFRAGE 16967 | autovacuum: VAKUUM öffentlichkeit.Artikel (um zu verhindern, dass umlaufende)
Hier ist, wie ich bin, es zu töten:
select pg_terminate_backend(16967) from pg_stat_activity;
InformationsquelleAutor Henley Chiu | 2013-08-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Problem
pg_cancel_backend(16967)
eher als "pg_terminate_backend()" (nicht ganz so streng ist mein Verständnis). Sobald Sie töten, die autovacuum-Prozess, wird es anfangen, wieder nach oben, als Sie wahrscheinlich bemerkt haben, besonders, da es wurde ins Leben gerufen-der Grund angegeben (das war, um zu verhindern, dass wraparound). Wenn Sie ProblemVACUUM public.articles
manuell, das Vakuum wird abgeschlossen, schneller auf Kosten der höheren disk-I/O. Das ist eine generalisierte Antwort, aber ist in der Regel, wie sich herausstellt.InformationsquelleAutor bma
Ist es besser Sie tun das Vakuum, bevor man die situation noch schlimmer. Auf einmal oder andere, haben Sie zu tun, um zu verhindern, dass der Verlust von Daten. Sie Fragen sich vielleicht, wo alle Daten Weg sind, wenn wraparound-id Fehler passiert. Werden die Daten noch in der db, aber es wird ausgeblendet und kann nicht aufgerufen werden, bis der Vakuum-Prozess ist getan. So lassen Sie es getan werden entweder, indem autovaccum oder manuelle Vakuum.
InformationsquelleAutor RunningAdithya
Wenn Sie ein alter table nur ein einziges mal, es wird wahrscheinlich nicht Schaden, es zu töten dieses eine mal. Sollten Sie die cancel-und die alter table in der gleichen Zeile in psql, so dass die alter table eine chance hat, zu starten, bevor andere autovacuum startet blockiert Sie wieder.
Gibt es eine kleine chance, dass die Streichung der autovacuum verursachen txid wrap-around-und Notfall-shutdown der Datenbank, die dauern wird ein bisschen arbeiten und Ausfallzeiten zu bereinigen. Aber wenn dies passiert,, Sie waren fast sicher in ein death-race eh schon.
Wenn Sie dies zu oft, dann werden Sie die Speicherung von bis massive Probleme für sich selbst, einschließlich der oben genannten Todes-Rennen und Notfall-shutdown.
Durch die Art und Weise, wählen Sie pg_terminate_backend(16967) sollte nicht über eine FROM-Klausel auf.
InformationsquelleAutor jjanes