Exécution de l’opération VACUUM sur les tables - Amazon Redshift

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.

Exécution de l’opération VACUUM sur les tables

Amazon Redshift peut trier et effectuer automatiquement une opération VACUUM DELETE sur les tables en arrière-plan. Pour nettoyer les tables après un chargement ou une série de mises à jour incrémentielles, vous pouvez également exécuter la commande VACUUM, sur toute la base de données ou sur chaque table individuelle.

Note

Seuls les utilisateurs disposant des autorisations nécessaires peuvent efficacement vider une table. Si VACUUM est exécutée sans les autorisations de table nécessaires, l’opération se termine correctement, mais n’a aucun effet. Pour obtenir la liste des autorisations de table valides permettant d’exécuter VACUUM efficacement, consultez VACUUM.

C’est pourquoi nous vous recommandons de nettoyer les tables individuellement en fonction des besoins. Nous vous recommandons également cette approche, car le nettoyage de toute la base de données peut être une opération coûteuse.

Tri automatique des tables

Amazon Redshift trie automatiquement les données en arrière-plan pour gérer les données de la table selon l’ordre de la clé de tri. Amazon Redshift assure le suivi de vos requêtes d’analyse afin de déterminer à quelles sections de la table le tri sera appliqué.

Selon la charge du système, Amazon Redshift lance le tri automatiquement. Ce tri automatique réduit la nécessité d’exécuter la commande VACUUM pour que les données restent dans l’ordre de la clé de tri. Si vous souhaitez que les données soient triées dans l’ordre de la clé de tri, par exemple après un chargement de données volumineux, vous pouvez toujours exécuter la commande VACUUM manuellement. Afin de déterminer s’il sera utile pour votre table d’exécuter une commande VACUUM SORT, surveillez la colonne vacuum_sort_benefit dans SVV_TABLE_INFO.

Amazon Redshift suit les requêtes d’analyse qui utilisent la clé de tri de chaque table. Amazon Redshift estime le pourcentage maximum d’amélioration en analysant et filtrant les données de chaque table (si la table a été complètement triée). L’estimation est visible dans la colonne vacuum_sort_benefit de SVV_TABLE_INFO. Vous pouvez utiliser cette colonne avec la colonne unsorted afin de déterminer à quel moment il est utile pour les requêtes d’exécuter une opération VACUUM SORT sur une table. La colonne unsorted reflète l’ordre de tri physique d’une table. La colonne vacuum_sort_benefit spécifie l’impact du tri d’une table en exécutant manuellement une opération VACUUM SORT.

Par exemple, réfléchissez à la requête suivante :

select "table", unsorted,vacuum_sort_benefit from svv_table_info order by 1;
table | unsorted | vacuum_sort_benefit -------+----------+--------------------- sales | 85.71 | 5.00 event | 45.24 | 67.00

Pour la table « sales », même si la table n’est pas triée à ~86 %, l’impact de la requête sur la performance pour la table est de 5 % seulement. Cela peut être parce qu’une petite partie de la table a été utilisée par les requêtes ou parce qu’un petit nombre de requêtes ont eu accès à la table. Pour la table « event », elle n’est pas triée physiquement à ~45 %. Mais l’impact de la requête sur la performance est de 67 %, ce qui indique qu’une partie plus importante de la table a été utilisée pour les requêtes ou qu’un grand nombre de requêtes ont eu accès à la table. L’exécution de l’opération VACUUM SORT peut potentiellement être utile pour la table « event ».

Suppression de vide automatique

Lorsque vous effectuez une suppression, les lignes sont marquées pour suppression, mais ne sont pas supprimées. Amazon Redshift exécute automatiquement une opération VACUUM DELETE en arrière-plan en fonction du nombre de lignes supprimées dans les tables de base de données. Amazon Redshift planifie l’exécution de VACUUM DELETE au cours des périodes à charge réduite et suspend l’opération au cours des périodes à charge élevée.

Fréquence de VACUUM

Vous devez exécuter la commande VACUUM aussi souvent que nécessaire pour assurer des performances de requêtes constantes. Prenez en compte ces facteurs au moment de déterminer la fréquence d’exécution de votre commande VACUUM :

  • Exécutez la commande VACUUM pendant les périodes où vous prévoyez une activité minimale sur le cluster, telles que le soir ou les fenêtres dédiées d’administration de la base de données.

  • Exécutez les commandes VACUUM en dehors des fenêtres de maintenance. Pour plus d’informations, consultez Planifier la maintenance Windows.

  • Une grande région non triée se traduit par des temps d’exécution de la commande VACUUM plus longs. Si vous différez la commande, son exécution prendra plus de temps, car un plus grand nombre de données doit être réorganisé.

  • La commande VACUUM est une opération gourmande en I/O et, par conséquent, plus elle nécessite de temps pour s’exécuter, plus elle a d’impact sur les requêtes simultanées et autres opérations de base de données s’exécutant sur votre cluster.

  • VACUUM prend plus de temps pour les tables qui utilisent le tri entrelacé. Pour déterminer si les tables entrelacées doivent être retriées, interrogez la vue SVV_INTERLEAVED_COLUMNS.

Phase de tri et phase de fusion

Amazon Redshift effectue une opération VACUUM en deux étapes : tout d’abord, il trie les lignes de la région non triée, puis, si nécessaire, il fusionne les lignes nouvellement triées en fin de la table avec les lignes existantes. Lors de l’exécution de la commande VACUUM sur une grande table, l’opération procède par une série d’étapes consistant en tris incrémentiels suivis de fusions. Si l’opération échoue ou si Amazon Redshift passe hors connexion pendant l’opération, la table ou la base de données partiellement aspirées se trouvent dans un état cohérent, mais vous devez relancer manuellement l’opération VACUUM. Les tris incrémentiels sont perdus, mais les lignes fusionnées qui ont été validées avant la défaillance n’ont pas besoin d’être aspirées à nouveau. Si la région non triée est grande, le temps perdu peut être important. Pour plus d’informations sur les étapes de tri et de fusion, consultez Réduire le volume des lignes fusionnées.

Les utilisateurs peuvent accéder aux tables pendant qu’elles sont aspirées. Vous pouvez exécuter des requêtes et des opérations d’écriture pendant qu’une table est l’objet de la commande VACUUM, mais lorsque DML et une commande VACUUM s’exécutent en même temps, les deux peuvent prendre plus de temps. Si vous exécutez les instructions UPDATE et DELETE pendant une opération VACUUM, les performances du système peuvent être réduites. Les fusions incrémentielles bloquent temporairement les opérations UPDATE et DELETE simultanée, tandis que les opérations UPDATE et DELETE bloquent à leur tour temporairement les étapes de la fusion incrémentielle sur les tables concernées. Les opérations DDL, telles que ALTER TABLE, sont bloquées tant que l’opération VACUUM sur la table n’est pas finie.

Note

Divers modificateurs pour l’opération VACUUM contrôlent la façon dont elle fonctionne. Vous pouvez les utiliser pour adapter l’opération aux besoins actuels. Par exemple, l’utilisation de VACUUM RECLUSTER accélère l’opération VACUUM, car elle n’effectue pas d’opération de fusion complète. Pour plus d'informations, consultez VACUUM.

Seuil de VACUUM

Par défaut, la commande VACUUM ignore la phase de tri pour toute table dans laquelle plus de 95 % des lignes sont déjà triées. L’omission de la phase de tri peut améliorer considérablement les performances de l’opération VACUUM. Pour modifier le seuil de tri par défaut d’une seule table, incluez le nom de la table et le paramètre TO seuil PERCENT lorsque vous exécutez la commande VACUUM.

Types d’opération VACUUM

Pour plus d’informations sur les différents types d’opérations VACUUM, consultez VACUUM.