Gibt es eine Möglichkeit, den Fortschritt der Erstellung eines Index in PostgreSQL zu überwachen? Ich erstelle einen Index für eine große Tabelle und möchte sehen, wie schnell dies geschieht.
Gibt es eine Möglichkeit, dies zu überwachen?
postgresql
index
Myahya
quelle
quelle
Antworten:
Laut der Indexpflegeseite von Postgres Wiki können Sie den aktuellen Status aller Ihrer Indizes folgendermaßen ermitteln:
Die Spalte
num_rows
gibt an, wie viele Zeilen von Ihrem Index abgedeckt werden, undindex_size
wächst, wenn der Index erstellt wird.quelle
Es gibt also keine gute Möglichkeit, dies zu tun, aber wenn Sie es wirklich wissen müssen ... berechnen Sie zuerst den Platz, den der Index einnehmen soll, basierend auf der Datengröße * Zeilen + Overhead. Sie können dann so etwas wie pfiles oder pgtruss verwenden, um die Dateien zu finden, die in $ PGDATA geschrieben werden. Wenn Ihre Indizes größer als 1 GB sind, handelt es sich um eine Reihe von Dateien wie nnnnn.n, wobei der erste Satz von n konsistent ist und die letzten n Schritte für jede GB-Datei. Sobald Sie wissen, wie viele Dateien erstellt wurden, können Sie das Wachstum beobachten und herausfinden, wie nah Sie am Ende sind. Grobe Schätzung, aber vielleicht hilft es.
quelle
Nein, gibt es nicht, auch wenn Sie es im CONCURRENT-Modus erstellen. Obwohl ich in der Vergangenheit die Größe der Datei im Datenbankverzeichnis im Auge behalten habe, ist dies nicht wirklich nützlich, da Sie nur raten können, wie groß sie sein wird.
quelle
Es wird in der kommenden PostgreSQL 12-Version möglich sein (sollte am 3. Oktober 2019 veröffentlicht werden).
Weitere Informationen finden Sie in den Dokumenten zur Ansicht pg_stat_progress_create_index und im Blog-Beitrag von depesz .
quelle