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.
Chargement des tables avec compression automatique
Vous pouvez appliquer manuellement des codages de compression aux colonnes des tables, en fonction de votre propre évaluation des données. Vous pouvez également utiliser la commande COPY avec COMPUPDATE définie sur ON pour analyser et appliquer automatiquement la compression en fonction des exemples de données.
Vous pouvez utiliser la compression automatique lorsque vous créez et chargez une nouvelle table. La commande COPY effectue une analyse de compression. Vous pouvez également effectuer une analyse de la compression sans charger les données ou en modifiant la compression sur une table en exécutant la commande ANALYZE COMPRESSION sur une table déjà remplie. Par exemple, vous pouvez exécuter ANALYZE COMPRESSION lorsque vous souhaitez analyser la compression sur une table pour une utilisation ultérieure, tout en préservant les instructions DDL (Data Definition Language) existantes.
La compression automatique équilibre les performances globales lors du choix des encodages de compression. Les analyses à plage restreinte peuvent mal s’exécuter si les colonnes de clé de tri sont beaucoup plus compressées que les autres colonnes de la même requête. Par conséquent, la compression automatique ignore la phase d’analyse des données sur les colonnes de clé de tri et conserve les types d’encodage définis par l’utilisateur.
La compression automatique choisit l’encodage RAW si vous n’avez pas explicitement défini de type d’encodage. ANALYZE COMPRESSION se comporte de la même manière. Pour des performances optimales de requête, envisagez d’utiliser RAW pour les clés de tri.
Fonctionnement de la compression automatique
Lorsque le paramètre COMPUPDATE est défini sur ON, la commande COPY applique la compression automatique chaque fois que vous exécutez la commande COPY avec une table cible vide et que toutes les colonnes de la table ont l’encodage RAW ou aucun codage.
Pour appliquer la compression automatique à une table vide, quel que soit son encodage de compression actuel, exécutez la commande COPY avec l’option COMPUPDATE définie sur ON. Pour désactiver la compression automatique, exécutez la commande COPY avec l’option COMPUPDATE définie sur OFF.
Vous ne pouvez pas appliquer la compression automatique sur une table qui contient déjà des données.
Note
L’analyse de la compression automatique requiert assez de lignes dans les données de chargement (au moins 100 000 lignes par tranche) pour générer un échantillon significatif.
La compression automatique exécute ces opérations en arrière-plan dans le cadre de la transaction de chargement :
-
Un échantillon initial de lignes est chargé depuis le fichier d’entrée. La taille de l’échantillon dépend de la valeur du paramètre COMPROWS. La valeur par défaut est 100 000.
-
Les options de compression sont choisies pour chaque colonne.
-
Les exemples de ligne sont supprimés de la table.
-
La table est recrée avec les encodages de compression choisis.
-
La totalité du fichier en entrée est chargé et compressé à l’aide des nouveaux encodages.
Une fois que vous exécutez la commande COPY, la table est entièrement chargée, compressée et prête à être utilisée. Si vous chargez plus de données ultérieurement, les lignes ajoutées sont compressées selon l’encodage existant.
Si vous souhaitez uniquement effectuer une analyse de la compression, exécutez ANALYZE COMPRESSION, qui est beaucoup plus efficace que l’exécution complète de la commande COPY. Ensuite, vous pouvez évaluer les résultats pour décider d’utiliser la compression automatique ou de recréer manuellement la table.
La compression automatique n’est prise en charge que pour la commande COPY. Vous pouvez aussi appliquer manuellement l’encodage de compression lorsque vous créez la table. Pour plus d’informations sur l’encodage de la compression, consultez Compression de colonnes pour réduire la taille des données stockées.
Exemple de compression automatique
Dans cet exemple, supposons que la base de données TICKIT contienne une copie de la table LISTING appelée BIGLIST et que vous souhaitiez appliquer la compression automatique à cette table lorsqu’elle est chargée avec 3 millions de lignes environ.
Pour charger et compresser automatiquement la table
-
Vérifiez que la table est vide. Vous ne pouvez appliquer la compression automatique qu’à une table vide :
TRUNCATE biglist;
-
Chargez la table avec une simple commande COPY. Même si la table est vide, un certain encodage antérieur peut avoir été spécifié. Pour permettre à Amazon Redshift d’effectuer une analyse de la compression, définissez le paramètre COMPUPDATE sur ON.
COPY biglist FROM 's3://amzn-s3-demo-bucket/biglist.txt' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' DELIMITER '|' COMPUPDATE ON;
Comme aucune option COMPROWS n’est spécifiée, la taille de l’échantillon par défaut et recommandée de 100 000 lignes par tranche est utilisée.
-
Regardez le nouveau schéma de la table BIGLIST afin de vérifier les schémas d’encodage choisis automatiquement.
SELECT "column", type, encoding from pg_table_def where tablename = 'biglist';
Column | Type | Encoding ----------------+-----------------------------+---------- listid | integer | az64 sellerid | integer | az64 eventid | integer | az64 dateid | smallint | none numtickets | smallint | az64 priceperticket | numeric(8,2) | az64 totalprice | numeric(8,2) | az64 listtime | timestamp without time zone | az64
-
Vérifiez que le nombre attendu de lignes a été chargé :
select count(*) from biglist;
count --------- 3079952 (1 row)
Lorsque les lignes sont ajoutés par la suite à cette table à l’aide des instructions COPY ou INSERT, les mêmes encodages de compression sont appliqués.