Chargement des tables avec compression automatique - 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.

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 COPY commande COMPUPDATE définie sur ON pour analyser et appliquer la compression automatiquement en fonction d'échantillons de données.

Vous pouvez utiliser la compression automatique lorsque vous créez et chargez une nouvelle table. La COPY commande 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 d'une table pour une utilisation future, tout en préservant les instructions existantes du langage de définition des données (DDL).

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 le RAW codage si vous n'avez pas défini de type de codage de manière explicite. ANALYZECOMPRESSIONse comporte de la même manière. Pour des performances de requête optimales, pensez à utiliser RAW des clés de tri.

Fonctionnement de la compression automatique

Lorsque le COMPUPDATE paramètre est activé, la COPY commande applique une compression automatique chaque fois que vous exécutez la COPY commande avec une table cible vide et que toutes les colonnes de la table sont RAW codées ou non codées.

Pour appliquer une compression automatique à une table vide, quels que soient ses codages de compression actuels, exécutez la COPY commande avec l'COMPUPDATEoption définie sur ON. Pour désactiver la compression automatique, exécutez la COPY commande avec l'COMPUPDATEoption définie surOFF.

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 :

  1. Un échantillon initial de lignes est chargé depuis le fichier d’entrée. La taille de l'échantillon est basée sur la valeur du COMPROWS paramètre. La valeur par défaut est 100 000.

  2. Les options de compression sont choisies pour chaque colonne.

  3. Les exemples de ligne sont supprimés de la table.

  4. La table est recrée avec les encodages de compression choisis.

  5. La totalité du fichier en entrée est chargé et compressé à l’aide des nouveaux encodages.

Après avoir exécuté la COPY commande, 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 compression, exécutez ANALYZECOMPRESSION, ce qui est plus efficace qu'une analyse complèteCOPY. 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 COPY commande. 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 Utilisation de la compression de colonne.

Exemple de compression automatique

Dans cet exemple, supposons que la TICKIT base de données contient une copie de la LISTING table appelée BIGLIST et que vous souhaitez appliquer une compression automatique à cette table lorsqu'elle est chargée avec environ 3 millions de lignes.

Pour charger et compresser automatiquement la table
  1. Vérifiez que la table est vide. Vous ne pouvez appliquer la compression automatique qu’à une table vide :

    TRUNCATE biglist;
  2. Chargez le tableau à l'aide d'une seule COPY commande. 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 compression, définissez le COMPUPDATE paramètre sur ON.

    COPY biglist FROM 's3://amzn-s3-demo-bucket/biglist.txt' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' DELIMITER '|' COMPUPDATE ON;

    Aucune COMPROWS option n'étant spécifiée, la taille d'échantillon par défaut et recommandée de 100 000 lignes par tranche est utilisée.

  3. Examinez le nouveau schéma de la BIGLIST table afin de passer en revue les schémas de codage sélectionnés 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
  4. Vérifiez que le nombre attendu de lignes a été chargé :

    select count(*) from biglist; count --------- 3079952 (1 row)

Lorsque des lignes sont ultérieurement ajoutées à ce tableau à l'aide d'INSERTinstructions COPY or, les mêmes codages de compression sont appliqués.