

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Supprimer le ballonnement avec pg\$1repack
<a name="pg-repack"></a>

Vous pouvez utiliser l'`pg_repack`extension pour supprimer le surpeuplement des tables et des index avec un verrouillage minimal de la base de données. Vous pouvez créer cette extension dans l'instance de base de données et exécuter le `pg_repack` client (lorsque la version du client correspond à la version de l'extension) depuis Amazon Elastic Compute Cloud (Amazon EC2) ou depuis un ordinateur pouvant se connecter à votre base de données. 

Contrairement à `pg_repack` cela`VACUUM FULL`, il ne nécessite pas de temps d'arrêt ni de période de maintenance et ne bloque pas les autres sessions.

`pg_repack`est utile dans les situations où `VACUUM FULL``CLUSTER`, ou `REINDEX` pourrait ne pas fonctionner. Il crée une nouvelle table qui contient les données de la table surchargée, suit les modifications par rapport à la table d'origine, puis remplace la table d'origine par la nouvelle. Il ne verrouille pas la table d'origine pour les opérations de lecture ou d'écriture pendant la création de la nouvelle table.

Vous pouvez l'utiliser `pg_repack` pour un tableau complet ou pour un index. Pour voir la liste des tâches, consultez la documentation [pg\$1repack](https://reorg.github.io/pg_repack/).

Limites:
+ Pour fonctionner`pg_repack`, votre table doit avoir une clé primaire ou un index unique.
+ `pg_repack `ne fonctionnera pas avec les tables temporaires.
+ `pg_repack`ne fonctionnera pas sur les tables qui ont des index globaux.
+ Lorsque `pg_repack` c'est en cours, vous ne pouvez pas effectuer d'opérations DDL sur les tables.

Le tableau suivant décrit les différences entre `pg_repack` et`VACUUM FULL`.


|  |  | 
| --- |--- |
| `VACUUM FULL` | `pg_repack` | 
| Commande intégrée | Une extension que vous exécutez depuis Amazon EC2 ou votre ordinateur local | 
| Nécessite un `ACCESS EXCLUSIVE` verrou lorsqu'il fonctionne sur une table | Nécessite un `ACCESS EXCLUSIVE` verrou uniquement pendant une courte période | 
| Fonctionne avec toutes les tables | Fonctionne uniquement sur les tables dotées de clés primaires et uniques | 
| Nécessite le double de l'espace de stockage utilisé par la table et les index | Nécessite le double de l'espace de stockage utilisé par la table et les index | 

Pour exécuter `pg_repack` sur une table, utilisez la commande : 

```
pg_repack -h <host> -d <dbname> --table <tablename> -k
```

Pour exécuter `pg_repack` sur un index, utilisez la commande :

```
pg_repack -h <host> -d <dbname> --index <index name>
```

Pour plus d'informations, consultez le billet de AWS blog [Remove bloat from Amazon Aurora and RDS for PostgreSQL](https://aws.amazon.com/blogs/database/remove-bloat-from-amazon-aurora-and-rds-for-postgresql-with-pg_repack/) with pg\$1repack.

**Mise en garde**  
L'`error-on-invalid-index`erreur « in » signifie `pg_repack` généralement qu'un ou plusieurs index de la table sont corrompus ou non valides. `pg_repack`ne peut pas fonctionner en toute sécurité sur des tables dont les index ne sont pas valides, car il dépend des index pour la cohérence des données pendant le processus de reconditionnement.   
Cette erreur se produit lorsque :  
L'index est marqué comme non valide (par exemple, en raison de l'échec d'une `CREATE INDEX CONCURRENTLY` instruction). 
L'index est endommagé (probablement en raison de problèmes matériels ou d'arrêts brusques).
Utilisez la requête suivante pour identifier les index non valides et pour les supprimer d'abord si vous les trouvez.  

```
SELECT indexrelid::regclass, indisvalid FROM pg_index WHERE indrelid = 'orders'::regclass AND NOT indisvalid; Drop the invalid index: DROP INDEX index_name;
```