VACUUM - 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.

VACUUM

Retrie les lignes et récupère l’espace dans une table spécifiée ou dans toutes les tables de la base de données actuelle.

Note

Seuls les utilisateurs disposant des autorisations nécessaires peuvent efficacement vider une table. Si elle 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 pour une exécution efficaceVACUUM, consultez la section Privilèges requis suivante.

Amazon Redshift trie automatiquement les données et s'exécute VACUUM DELETE en arrière-plan. Cela réduit le besoin d'exécuter la VACUUM commande. Pour de plus amples informations, veuillez consulter Exécution de l’opération VACUUM sur les tables.

Par défaut, VACUUM ignore la phase de tri pour tout tableau dont plus de 95 % des lignes sont déjà triées. Le fait de sauter la phase de tri peut améliorer considérablement les VACUUM performances. Pour modifier le seuil de tri ou de suppression par défaut pour une seule table, incluez le nom de la table et le PERCENT paramètre de seuil TO lors de l'exécutionVACUUM.

Les utilisateurs peuvent accéder aux tables pendant qu’elles sont aspirées. Vous pouvez effectuer des requêtes et des opérations d'écriture pendant le nettoyage d'une table, mais lorsque les commandes du langage de manipulation des données (DML) et un vacuum s'exécutent simultanément, les deux peuvent prendre plus de temps. Si vous exécutez UPDATE et lancez DELETE des instructions pendant un vide, les performances du système peuvent être réduites. VACUUMDELETEbloque temporairement les opérations de mise à jour et de suppression.

Amazon Redshift effectue automatiquement un DELETE ONLY aspirateur en arrière-plan. Le fonctionnement automatique de l'aspirateur s'arrête lorsque les utilisateurs exécutent des opérations de langage de définition des données (DDL), telles que ALTERTABLE.

Note

La syntaxe et le comportement de la VACUUM commande Amazon Redshift sont sensiblement différents de ceux de l'opération SQL VACUUM Postgre. Par exemple, l'VACUUMopération par défaut dans Amazon Redshift est VACUUM FULL de récupérer de l'espace disque et de trier à nouveau toutes les lignes. En revanche, l'VACUUMopération par défaut dans Postgre permet SQL simplement de récupérer de l'espace et de le réutiliser.

Pour de plus amples informations, veuillez consulter Exécution de l’opération VACUUM sur les tables.

Privilèges requis

Les privilèges suivants sont requis pour VACUUM :

  • Superuser

  • Utilisateurs ayant le VACUUM privilège

  • Propriétaire de la table

  • Propriétaire de la base de données avec qui la table est partagée

Syntaxe

VACUUM [ FULL | SORT ONLY | DELETE ONLY | REINDEX | RECLUSTER ] [ [ table_name ] [ TO threshold PERCENT ] [ BOOST ] ]

Paramètres

FULL

Trie la table spécifiée (ou toutes les tables de la base de données actuelle) et récupère l'espace disque occupé par les lignes marquées pour suppression lors UPDATE des DELETE opérations précédentes. VACUUMFULLest la valeur par défaut.

Une opération complète n’effectue pas une réindexation des tables entrelacées. Pour réindexer les tables entrelacées et exécuter une opération VACUUM FULL, utilisez l’option VACUUM REINDEX.

Par défaut, VACUUM FULL ignore la phase de tri pour toute table déjà triée à au moins 95 %. S'il VACUUM est capable de sauter la phase de tri, il exécute une DELETE ONLY et récupère de l'espace dans la phase de suppression de telle sorte qu'au moins 95 % des lignes restantes ne soient pas marquées pour suppression.  

Si le seuil de tri n'est pas atteint (par exemple, si 90 % des lignes sont triées) et qu'il VACUUM effectue un tri complet, il effectue également une opération de suppression complète, récupérant ainsi de l'espace sur 100 % des lignes supprimées.

Vous ne pouvez modifier le seuil par défaut de VACUUM que pour une seule table. Pour modifier le seuil de vide par défaut pour une seule table, incluez le nom de la table et le PERCENT paramètre de seuil TO.

SORT ONLY

Trie la table spécifiée (ou toutes les tables de la base de données actuelle) sans récupération de l’espace libéré par les lignes supprimées. Cette option est utile lorsque la récupération de l’espace disque n’est pas importante, mais qu’un nouveau tri l’est. Le SORT ONLY vide réduit le temps écoulé pour les opérations d'aspiration lorsque la région non triée ne contient pas un grand nombre de lignes supprimées et ne couvre pas l'ensemble de la région triée. Les applications qui n’ont pas de contraintes d’espace disque, mais dépendent de l’optimisation des requêtes et de la conservation des lignes de table triées peuvent bénéficier de ce type d’opération.

Par défaut, VACUUM SORT ONLY ignore toute table déjà triée à au moins 95 %. Pour modifier le seuil de tri par défaut pour une seule table, incluez le nom de la table et le PERCENT paramètre de seuil TO lors de l'exécutionVACUUM.

DELETE ONLY

Amazon Redshift effectue automatiquement un DELETE ONLY aspirateur en arrière-plan. Vous avez donc rarement, voire jamais, besoin de faire fonctionner un DELETE ONLY aspirateur.

A VACUUM DELETE récupère l'espace disque occupé par les lignes marquées pour suppression par les DELETE opérations précédentes UPDATE et compacte la table pour libérer l'espace consommé. Une opération de mise DELETE ONLY sous vide ne trie pas les données d'une table.

Cette option réduit le temps passé pour les opérations VACUUM lorsque la récupération de l’espace disque est importante, mais qu’un nouveau tri des lignes ne l’est pas. Cette option peut également être utile lorsque vos performances de requête sont déjà optimales et qu’un nouveau tri des lignes pour optimiser ces performances n’est pas une condition requise.

Par défaut, VACUUM DELETE ONLY récupère de l'espace de telle sorte qu'au moins 95 % des lignes restantes ne soient pas marquées pour suppression. Pour modifier le seuil de suppression par défaut pour une seule table, incluez le nom de la table et le PERCENT paramètre de seuil TO lors de l'exécutionVACUUM. 

Certaines opérations, par exemple ALTER TABLE APPEND, peuvent provoquer la fragmentation des tables. Lorsque vous utilisez la clause DELETE ONLY, l’opération VACUUM récupère l’espace des tables fragmentées. La même valeur de seuil de 95% s’applique à l’opération de défragmentation.

REINDEXnom de table

Analyse la distribution des valeurs dans les colonnes clés de tri entrelacées, puis effectue une opération complèteVACUUM. S'il REINDEX est utilisé, un nom de table est requis.

VACUUMREINDEXprend beaucoup plus de temps que VACUUM FULL parce qu'il effectue une passe supplémentaire pour analyser les clés de tri entrelacées. L’opération de tri et de fusion peut prendre plus de temps pour les tables entrelacées, car le tri entrelacé peut nécessiter la réorganisation de plus de lignes qu’un tri composé.

Si une VACUUM REINDEX opération se termine avant d'être terminée, la suivante VACUUM reprend l'opération de réindexation avant d'effectuer l'opération de mise sous vide complet.

VACUUMREINDEXn'est pas pris en charge avec le seuil TOPERCENT. 

table_name

Nom de la table sur laquelle s’applique l’opération VACUUM. Si vous ne spécifiez pas un nom de table, l’opération VACUUM s’applique à toutes les tables de la base de données actuelle. Vous pouvez spécifier une table créée par l’utilisateur permanente ou temporaire. La commande n’est pas pertinente pour les autres objets, tels que les vues et les tables système.

Si vous incluez le PERCENT paramètre de seuil TO, un nom de table est requis.

RECLUSTERnom de table

Trie les parties de la table qui ne sont pas triées. Les parties de la table qui sont déjà triées par le tri automatique de la table restent intactes. Cette commande ne fusionne pas les données nouvellement triées avec la région triée. Elle ne récupère pas non plus tout l’espace marqué pour suppression. Lorsque cette commande est exécutée, le tableau peut ne pas apparaître complètement trié, comme l'indique le unsorted champ dans SVV _ TABLE _INFO.

Nous vous recommandons de l'utiliser VACUUM RECLUSTER pour les tables volumineuses à ingestion fréquente et pour les requêtes n'accédant qu'aux données les plus récentes.

VACUUMRECLUSTERn'est pas pris en charge avec le seuil TOPERCENT. S'il RECLUSTER est utilisé, un nom de table est requis.

VACUUMRECLUSTERn'est pas pris en charge sur les tables avec des clés de tri entrelacées et sur les tables avec un style ALL de distribution.

table_name

Nom de la table sur laquelle s’applique l’opération VACUUM. Vous pouvez spécifier une table créée par l’utilisateur permanente ou temporaire. La commande n’est pas pertinente pour les autres objets, tels que les vues et les tables système.

Seuil TO PERCENT

Clause qui spécifie le seuil au-dessus duquel la phase de tri VACUUM est ignorée et le seuil cible pour récupérer de l'espace lors de la phase de suppression. Le seuil de tri est le pourcentage du total des lignes qui sont déjà dans l’ordre de tri de la table spécifiée avant l’opération VACUUM.  Le seuil de suppression est le pourcentage minimal de lignes totales non marquées en vue de leur suppression après l’opération VACUUM.

Comme les lignes ne sont triées à VACUUM nouveau que lorsque le pourcentage de lignes triées dans un tableau est inférieur au seuil de tri, Amazon Redshift peut souvent VACUUM réduire les délais de manière significative. De même, lorsqu'il VACUUM n'est pas contraint de récupérer de l'espace sur 100 % des lignes marquées pour suppression, il est souvent en mesure d'ignorer les blocs de réécriture qui ne contiennent que quelques lignes supprimées.

Par exemple, si vous spécifiez 75 comme seuil, la phase VACUUM de tri est ignorée si 75 % ou plus des lignes du tableau sont déjà dans l'ordre de tri. Pour la phase de suppression, VACUUMS définit l'objectif de récupération d'espace disque de telle sorte qu'au moins 75 % des lignes du tableau ne soient pas marquées pour suppression après le vide. La valeur seuil doit être un nombre entier compris entre 0 et 100. La valeur par défaut est 95. Si vous spécifiez une valeur de 100, trie VACUUM toujours le tableau sauf s'il est déjà complètement trié et libère de l'espace sur toutes les lignes marquées pour suppression. Si vous spécifiez une valeur de 0, VACUUM ne trie jamais le tableau et ne récupère jamais d'espace.

Si vous incluez le PERCENT paramètre de seuil TO, vous devez également spécifier un nom de table. Si le nom d'une table est omis, VACUUM échoue.

Vous ne pouvez pas utiliser le PERCENT paramètre de seuil TO avecREINDEX.

BOOST

Exécute la VACUUM commande avec des ressources supplémentaires, telles que de la mémoire et de l'espace disque, au fur et à mesure de leur disponibilité. Avec BOOST cette option, VACUUM fonctionne dans une seule fenêtre et bloque les suppressions et mises à jour simultanées pendant toute la durée de l'VACUUMopération. L'exécution de BOOST cette option sollicite les ressources du système, ce qui peut affecter les performances des requêtes. Exécutez-le VACUUM BOOST lorsque la charge sur le système est faible, par exemple pendant les opérations de maintenance.

Tenez compte des points suivants lorsque vous utilisez l'BOOSToption :

  • Lorsqu'elle BOOST est spécifiée, la valeur table_name est obligatoire.

  • BOOSTn'est pas pris en charge avecREINDEX.

  • BOOSTest ignoré avec DELETEONLY.

Notes d’utilisation

Pour la plupart des applications Amazon Redshift, une opération VACUUM FULL est recommandée. Pour plus d'informations, consultez Exécution de l’opération VACUUM sur les tables.

Avant d’exécuter une opération VACUUM, notez le comportement suivant :

  • Vous ne pouvez pas courir VACUUM dans un bloc de transactions (BEGIN... END). Pour plus d’informations sur les transactions, consultez Isolement sérialisable.

  • Vous ne pouvez exécuter qu'une seule VACUUM commande sur un cluster à la fois. Si vous essayez d’exécuter plusieurs opérations VACUUM simultanément, Amazon Redshift renvoie une erreur.

  • Une certaine croissance de la table peut se produire lors d’une opération VACUUM. Ce comportement est attendu lorsqu’il n’y a aucune ligne supprimée à récupérer ou que le nouvel ordre de tri de la table se traduit par un ratio inférieur de compression des données.

  • Pendant les opérations VACUUM, une certaine dégradation des performances des requêtes est attendue. Les performances normales reprennent dès que l’opération VACUUM est terminée.

  • Les opérations d’écriture simultanées se poursuivent pendant les opérations VACUUM, mais nous ne les recommandons pas. Il est plus efficace de terminer les opérations d’écriture avant d’exécuter l’opération VACUUM. En outre, toutes les données écrites après le démarrage d’une opération de vide ne peuvent pas être nettoyées par cette opération. Dans ce cas, une deuxième opération de nettoyage est nécessaire.

  • Une opération VACUUM peut ne pas être en mesure de démarrer si une opération de chargement ou d’insertion est déjà en cours. Les opérations VACUUM nécessitent temporairement un accès exclusif aux tables afin de démarrer. Comme cet accès exclusif est requis brièvement, les opérations VACUUM ne bloquent pas les charges et les insertions simultanées pendant une période de temps significative.

  • Les opérations VACUUM sont ignorées lorsqu’il n’y a aucun travail à faire pour une table spécifique ; cependant, la découverte que l’opération peut être ignorée a un coût. Si vous savez qu’une table est vierge ou qu’elle ne respecte pas le seuil VACUUM défini, n’exécutez pas sur elle d’opération VACUUM.

  • Une opération de mise DELETE ONLY sous vide sur une petite table peut ne pas réduire le nombre de blocs utilisés pour stocker les données, en particulier lorsque la table comporte un grand nombre de colonnes ou que le cluster utilise un grand nombre de tranches par nœud. Ces opérations VACUUM ajoutent un bloc par colonne et par tranche pour tenir compte des insertions simultanées dans la table ; en outre, il est possible que cette surcharge compense la diminution du nombre de blocs de l’espace disque récupéré. Par exemple, si une table de 10 colonnes sur un cluster de 8 nœuds occupe 1000 blocs avant une opération VACUUM, celle-ci ne réduit pas le nombre réel de blocs, sauf si plus de 80 blocs d’espace disque sont récupérés en raison des lignes supprimées. (Chaque bloc de données utilise 1 Mo.)

Les opérations VACUUM automatiques s’interrompent si une des conditions suivantes est remplie :

  • Un utilisateur exécute une opération en langage de définition des données (DDL), par exemple ALTERTABLE, qui nécessite un verrouillage exclusif d'une table sur laquelle l'aspirateur automatique est en train de travailler.

  • Un utilisateur déclenche VACUUM sur n'importe quelle table du cluster (une seule VACUUM peut être exécutée à la fois).

  • Une période de forte charge de cluster.

Exemples

Récupérez l’espace et la base de données, et triez à nouveau les lignes de toutes les tables en fonction du seuil d’aspiration de 95 % par défaut.

vacuum;

Récupérez de l'espace et triez à nouveau les lignes du SALES tableau en fonction du seuil de 95 % par défaut.

vacuum sales;

Récupérez toujours de l'espace et triez à nouveau les lignes du SALES tableau.

vacuum sales to 100 percent;

Triez à nouveau les lignes du SALES tableau uniquement si moins de 75 % des lignes sont déjà triées.

vacuum sort only sales to 75 percent;

Récupérez de l'espace dans le SALES tableau de telle sorte qu'au moins 75 % des lignes restantes ne soient pas marquées pour suppression après le vide.

vacuum delete only sales to 75 percent;

Réindexez puis passez l'aspirateur sur la LISTING table.

vacuum reindex listing;

La commande suivante renvoie une erreur.

vacuum reindex listing to 75 percent;

Regroupez puis passez l'aspirateur sur la LISTING table.

vacuum recluster listing;

Regroupez puis passez l'aspirateur sur la LISTING table avec l'BOOSToption.

vacuum recluster listing boost;