REINDEX

Name

REINDEX  --  reconstruit les indexes corrompus.

Synopsis

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

Entrées

TABLE

Recrée tous les indexes d'une table spécifiée.

DATABASE

Recrée tous les indexes système d'une base spécifiée. (Les indexes table-utilisateur ne sont pas inclus).

INDEX

Recrée un index spécifié.

name

Le nom de la table/base/index à ré-indexer.

FORCE

Force la reconstruction des indexes système. Sans le mot-clé REINDEX saute les indexes système qui ne sont pas marqués invalides. FORCE est non pertinent pour REINDEX INDEX, ou quand la ré-indexation utilise les indexes.

Sorties

REINDEX

Message renvoyé si la table est ré-indexée correctement.

Description

REINDEX est utilisé pour reconstruire les indexes corrompus. bien qu'en théorie ceci ne soit jamais nécessaire, en pratique les indexes peuvent être corrompus à cause des bugs de logiciels ou des problèmes de matériel. REINDEX fournit une méthode de récupération.

Si vous suspectez la corruption d'un index sur une table utilisateur, vous pouvez simplement reconstruire l'index, ou tous les indexes de la table en utilisant REINDEX INDEX ou REINDEX TABLE.

Note

Une autre approche avec un index d'une table utilisateur corrompu est de la supprimer et de le recréer. ceci peut être préférable si vous voulez maintenir un semblant d'opération normale sur la table. REINDEX acquiert les verrous exclusifs sur la table, tandis que CREATE INDEX verrouille seulement en écriture pas en lecture sur la table.

Les choses sont plus difficiles si vous voulez récupérer les indexes corrompus d'une table système. Dans ce cas il est important pour le serveur faisant la récupération de ne pas utiliser les indexes suspects eux-mêmes. (En effet, dans ce genre de scénario vous pouvez avoir des serveurs qui plantent immédiatement au démarrage, à cause de la confiance accordée aux indexes corrompus). Pour récupérer de façon sûre, le postmaster doit être arrêté et un serveur PostgreSQL autonome doit être démarré, en lui fournissant les options en ligne de commande -O et -P (ces options permettent les modifications des tables système et évitent l'utilisation des indexes système, recpectivement). REINDEX INDEX, REINDEX TABLE, ou REINDEX DATABASE dépendent de quelle façon vous voulez faire la reconstruction. Si vous doutez, utilisez REINDEX DATABASE FORCE pour forcer la reconstruction de tous les indexes système de la base. Ensuite quittez le serveur autonome et redémarrez le postmaster.

Comme en général la plupart de gens n'utilisent qu'un seul serveur, certaines notes d'utilisation peuvent être dans l'ordre :

Voir la page de référence de postgres(1) pour plus d'information.

Utilisation

Recrée les indexes sur la table mytable :

     REINDEX TABLE mytable;
   

Reconstruit un index simple :

    REINDEX INDEX my_index;
   

Reconstruit tous les indexes système (ne fonctionnera qu'avec un serveur unique) :

    REINDEX DATABASE my_database FORCE;
   

Compatibilité

SQL92

Il n'y a pas de REINDEX en SQL92.