| Documentation PostgreSQL 7.2 | ||
|---|---|---|
| <<< Previous | Next >>> | |
REINDEX { TABLE | DATABASE | INDEX } name [ FORCE ]
|
Recrée tous les indexes d'une table spécifiée.
Recrée tous les indexes système d'une base spécifiée. (Les indexes table-utilisateur ne sont pas inclus).
Recrée un index spécifié.
Le nom de la table/base/index à ré-indexer.
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.
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.
![]() | 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 :
Démarrer le serveur avec une commande comme
postgres -D $PGDATA -O -P my_database |
Vous pouvez utiliser n'importe quelle commande SQL, pas seulement REINDEX.
Faîtes attention que le serveur traite le saut de ligne comme le signe terminant une commande; il ne traite pas de façon intelligente les points-virgule, comme dans psql. Pour continuer une commande sur plusieurs lignes, vous devez taper un backslash juste avant chaque saut de ligne sauf la dernière. Mais, vous n'aurez pas accès à certains avantages du traitement de ligne (pas d'historique de commande, par exemple).
Pour quitter le serveur, tapez un EOF (control-D, habituellement).
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; |
| <<< Previous | Home | Next >>> |
| NOTIFY | Up | RESET |