Saltar al contenido

¿Cómo puedo diseñar la codificación de columnas en Amazon Redshift?

4 minutos de lectura
0

Quiero diseñar la codificación de columnas en Amazon Redshift.

Descripción breve

Para configurar la codificación de columnas en Amazon Redshift, utiliza los comandos ENCODE AUTO y ANALYZE COMPRESSION. Para obtener más información, consulta Codificaciones de compresión.

Si aplicas compresión a una columna de claves de ordenación, el rendimiento de la consulta puede degradarse porque añade escaneos de bloques para ciertos tipos de consultas. Si especificas manualmente los tipos de codificación para una tabla, define la codificación RAW para la columna de claves de ordenación.

Para obtener más información, consulta Prácticas recomendadas de Amazon Redshift para el diseño de tablas.

Resolución

Uso de ENCODE AUTO para maximizar la compresión de las columnas

Utiliza ENCODE AUTO para optimizar automáticamente la compresión de columnas en las tablas de Amazon Redshift. De forma predeterminada, ENCODE AUTO analiza continuamente los patrones de las cargas de trabajo del clúster para ayudar a maximizar el rendimiento de las consultas y reducir la necesidad de administrar la compresión manualmente.

Si especificas un tipo de codificación en cualquier columna de la tabla, desactivas ENCODE AUTO.

Para comprobar si tienes activado ENCODE AUTO para una tabla, utiliza la siguiente consulta:

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

Nota: Sustituye table_name por el nombre de tu tabla.

Ejecución del comando ANALYZE COMPRESSION para revisar un análisis de la tabla

Para realizar un análisis de compresión y generar un informe que sugiera la codificación de compresión para la tabla, ejecuta el comando ANALYZE COMPRESSION:

ANALYZE COMPRESSION lineitem;

Nota: Sustituye lineitem por el nombre de la tabla.

Resultado de ejemplo:

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)

Nota: Para cada columna, el informe incluye una estimación de la posible reducción del espacio en disco en comparación con la codificación RAW.

(Opcional) Para comprender el resultado del comando ANALYZE COMPRESSION, puedes ver la definición de la tabla. Ejecuta el siguiente comando:

SHOW TABLE lineitem;

Nota: Sustituye lineitem por el nombre de la tabla.

Resultado de ejemplo:

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 actúa como una herramienta de asesoramiento y no modifica las codificaciones de las columnas de la tabla. Para aplicar las codificaciones sugeridas, vuelve a crear la tabla o ejecuta el comando ALTER TABLE:

ALTER TABLE lineitem ALTER COLUMN l_dummy ENCODE example_compression;

Nota: Sustituye lineitem por el nombre de la tabla, l_dummy por el nombre de la columna y example_compression por la codificación de compresión.

Información relacionada

¿Cómo puedo detectar y liberar bloqueos en Amazon Redshift?

Compresión de columnas para reducir el tamaño de los datos almacenados

OFICIAL DE AWSActualizada hace un año