Passer au contenu

Comment puis-je concevoir le codage des colonnes dans Amazon Redshift ?

Lecture de 4 minute(s)
0

Je souhaite concevoir le codage des colonnes dans Amazon Redshift.

Brève description

Pour configurer le codage des colonnes dans Amazon Redshift, utilisez les commandes ENCODE AUTO et ANALYZE COMPRESSION. Pour plus d'informations, consultez la section Codages de compression.

Si vous appliquez la compression à une colonne de clé de tri, les performances des requêtes peuvent se dégrader car cela ajoute des analyses de blocs pour certains types de requêtes. Si vous spécifiez manuellement les types de codage pour une table, définissez le codage RAW pour la colonne de la clé de tri.

Pour plus d'informations, consultez les bonnes pratiques d'Amazon Redshift pour la conception de tables.

Résolution

Utiliser ENCODE AUTO pour optimiser la compression des colonnes

Utilisez ENCODE AUTO pour optimiser automatiquement la compression des colonnes dans vos tables Amazon Redshift. Par défaut, ENCODE AUTO analyse en permanence les modèles de charge de travail de votre cluster afin d'optimiser les performances des requêtes et de réduire la nécessité d'une gestion manuelle de la compression.

Si vous spécifiez un type de codage pour n'importe quelle colonne de la table, vous désactivez ENCODE AUTO.

Pour vérifier si ENCODE AUTO est activé pour une table, utilisez la requête suivante :

SELECT "table", encoded FROM svv_table_info WHERE "table" = 'table_name';

Remarque : Remplacez table_name par le nom de votre table.

Exécuter la commande ANALYZE COMPRESSION pour examiner une analyse de votre table

Pour effectuer une analyse de compression et générer un rapport qui suggère un codage de compression pour votre table, exécutez la commande ANALYZE COMPRESSION :

ANALYZE COMPRESSION lineitem;

**Remarque :**Remplacez lineitem par le nom de votre table.

Exemple de sortie :

Table   |     Column      | Encoding | Est_reduction_pct
----------+-----------------+----------+-------------------
 lineitem | l_orderkey      | raw      | 0.00
 lineitem | l_partkey       | az64     | 33.34
 lineitem | l_suppkey       | az64     | 45.46
 lineitem | l_linenumber    | az64     | 87.88
 lineitem | l_quantity      | az64     | 80.00
 lineitem | l_extendedprice | az64     | 60.32
 lineitem | l_discount      | az64     | 90.77
 lineitem | l_tax           | az64     | 90.77
 lineitem | l_returnflag    | zstd     | 80.99
 lineitem | l_linestatus    | zstd     | 86.86
 lineitem | l_shipdate      | az64     | 61.15
 lineitem | l_commitdate    | az64     | 61.26
 lineitem | l_receiptdate   | az64     | 61.15
 lineitem | l_shipinstruct  | zstd     | 96.50
 lineitem | l_shipmode      | bytedict | 88.89
 lineitem | l_comment       | zstd     | 70.36
 lineitem | l_dummy         | zstd     | 99.97
(17 rows)

Remarque : Pour chaque colonne, le rapport inclut une estimation de la réduction potentielle de l'espace disque par rapport au codage RAW.

(Facultatif) Pour vous aider à comprendre le résultat de la commande ANALYZE COMPRESSION, vous pouvez consulter la définition de votre table. Exécutez la commande suivante :

SHOW TABLE lineitem;

Remarque : Remplacez lineitem par le nom de votre table.

Exemple de sortie :

Show Table DDL statement             
-------------------------------------------------
 CREATE TABLE public.lineitem (                 
     l_orderkey integer ENCODE raw,             
     l_partkey integer ENCODE raw,              
     l_suppkey integer ENCODE raw,              
     l_linenumber integer ENCODE raw,           
     l_quantity numeric(15,2) ENCODE raw,       
     l_extendedprice numeric(15,2) ENCODE raw,  
     l_discount numeric(15,2) ENCODE raw,       
     l_tax numeric(15,2) ENCODE raw,            
     l_returnflag character(1) ENCODE raw,      
     l_linestatus character(1) ENCODE raw,      
     l_shipdate date ENCODE raw,                
     l_commitdate date ENCODE raw,              
     l_receiptdate date ENCODE raw,             
     l_shipinstruct character(25) ENCODE raw,   
     l_shipmode character(10) ENCODE raw,       
     l_comment character varying(44) ENCODE raw,
     l_dummy character varying(10) ENCODE raw   
 )                                              
 DISTSTYLE AUTO                                 
 SORTKEY ( l_orderkey );
(1 row)

**ANALYZE COMPRESSION ** agit comme un outil consultatif et ne modifie pas les codages des colonnes de la table. Pour appliquer les codages suggérés, recréez la table ou exécutez la commande ALTER TABLE :

ALTER TABLE lineitem ALTER COLUMN l_dummy ENCODE example_compression;

Remarque : Remplacez lineitem par le nom de votre table, l_dummy par le nom de votre colonne, et example_compression par votre codage de compression.

Informations connexes

Comment puis-je détecter et débloquer les verrous dans Amazon Redshift ?

Compression des colonnes pour réduire la taille des données stockées

AWS OFFICIELA mis à jour il y a un an