REINDEX

Name

REINDEX -- baut Indexe neu

Synopsis

REINDEX { DATABASE | TABLE | INDEX } name [ FORCE ]

Beschreibung

REINDEX baut einen Index anhand der Daten in der Tabelle neu auf und ersetzt die alte Version des Index. Es gibt zwei hauptsächliche Gründe, warum man REINDEX verwenden würde:

Wenn Sie einen verfälschten Index für eine Benutzertabelle vermuten, dann können Sie diesen Index oder alle Indexe der Tabelle einfach mit REINDEX INDEX oder REINDEX TABLE neu aufbauen lassen. Eine andere Möglichkeit ist, den Index einfach zu löschen und neu zu erzeugen. Das ist eigentlich auch besser, wenn Sie die Tabelle währenddessen einigermaßen normal weiterverwenden wollen. REINDEX sperrt die Tabelle exklusiv, während CREATE INDEX nur Schreibvorgänge, aber keine Lesevorgänge aussperrt.

Etwas schwieriger wird es bei einem verfälschten Systemindex. In dem Fall ist es wichtig, dass das System den in Frage stehenden Index nicht selbst schon verwendet hat. (In solchen Fällen kann es sein, dass Serverprozesse beim Start sofort abstürzen, weil Sie verfälschte Systemindexe zu verwenden versuchen.) Um das System sicher zu reparieren muss der Server heruntergefahren werden und eine Sitzung im Einzelbenutzermodus mit den Kommandozeilenoptionen -O und -P gestartet werden. (Diese Optionen erlauben Veränderungen an den Systemtabellen bzw. unterbinden die Verwendung der Systemindexe.) Dann kann man REINDEX DATABASE, REINDEX TABLE oder REINDEX INDEX ausführen, je nachdem, wie viel man reparieren muss. Im Zweifelsfall verwenden Sie REINDEX DATABASE FORCE um alle Systemindexe in der Datenbank neu aufzubauen. Danach verlassen Sie die Einzelbenutzersitzung und starten den richtigen Server neu.

Informationen über die Verwendung des Einzelbenutzerservers finden Sie unter postgres.

Parameter

DATABASE

Baut alle Systemindexe in der angegebenen Datenbank neu auf. Indexe für Benutzertabellen sind nicht betroffen. Diese Form von REINDEX kann nur im Einzelbenutzermodus ausgeführt werden (siehe oben).

TABLE

Baut alle Index der angegebenen Tabelle neu auf.

INDEX

Baut den angegebenen Index neu auf.

name

Der Name der bestimmten Datenbank, Tabelle oder des Index, der neu indiziert werden soll. Tabellen- und Indexnamen können eine Schemaqualifikation haben.

FORCE

Erzwingt die Erneuerung von Systemindexen. Ohne dieses Schlüsselwort überspringt REINDEX Systemindexe, die nicht als ungültig markiert worden sind. FORCE hat keine Bedeutung bei REINDEX INDEX oder wenn Benutzerindexe erneuert werden.

Meldungen

REINDEX

Meldung, wenn die Indexe erfolgreich erneuert wurden.

Beispiele

Baue alle Index für die Tabelle meine_tabelle neu auf:

REINDEX TABLE meine_tabelle;

Baue einen einzelnen Index neu auf:

REINDEX INDEX mein_index;

Baue alle Systemindexe neu auf (das funktioniert nur im Einzelbenutzermodus):

REINDEX DATABASE meine_datenbank FORCE;

Kompatibilität

Der Befehl REINDEX ist eine PostgreSQL-Erweiterung.