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_repack
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
celaVACUUM 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_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
etVACUUM FULL
.
|
|
Commande intégrée |
Une extension que vous exécutez depuis Amazon EC2 ou votre ordinateur local |
Nécessite un |
Nécessite un |
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
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;