Warum dauert das Löschen eines Index länger als das Erstellen?

8

In postgresql habe ich einen Index zu einer großen Tabelle hinzugefügt, und es dauerte etwa 1 Sekunde (was, offen gesagt, mich überraschte).

Als ich den Index fallen ließ, ließ ich ihn für 200 Sekunden laufen, ohne dass er zurückkehrte, und beendete schließlich den Löschvorgang.

%Vor%

Nimmt sehr wenig Zeit in Anspruch, aber

%Vor%

Es dauerte so lange, dass ich aufgab und abbrach.

Die Tabelle cservicelocationdivisionstatus hat 6 Spalten und etwa 310.000 Datenzeilen.

Warum dauert das Entfernen eines Indexes viel länger als das Erstellen?

BEARBEITEN: Diese Seite gibt an, dass für mySql eine Tabelle mit mehreren Indizes die Tabelle kopiert und alle wieder einfügt die Zeilen ohne den Index, den Sie löschen. (Schlimmer noch: Wenn Sie mit mySql mehrere Indizes für dieselbe Tabelle löschen, wird die Tabelle für jeden zu entfernenden Index erneut kopiert, anstatt intelligent zu sein und die Daten einmal ohne alle Indizes erneut zu kopieren fallen.) Passiert so etwas mit Postgres?

    
Martin Carney 13.10.2014, 18:04
quelle

1 Antwort

15

Ein Index auf einer Tabelle der von Ihnen genannten Größe sollte in der Regel ziemlich schnell (und sicherlich schneller als 3 Minuten) gelöscht werden können. Es klingt für mich wie die Tabelle / Index verwendet wurde und daher nicht fallen gelassen werden konnte.

Sie können dies bestätigen, indem Sie die Tabelle pg_stat_activity abfragen und nach Aktivitäten suchen, die die Tabelle betreffen, für die Sie den Index erstellt haben.

    
khampson 13.10.2014, 18:13
quelle

Tags und Links