Carga de tablas con compresión automática
Puede aplicar codificaciones de compresión manualmente a las columnas de las tablas, en función de su propia evaluación de los datos. También puede utilizar el comando COPY con COMPUPDATE establecido en ON para analizar y aplicar la compresión de forma automática en función de los datos de muestra.
Puede usar la compresión automática al crear y cargar una tabla completamente nueva. El comando COPY realiza un análisis de compresión. También puede realizar un análisis de compresión sin cargar datos ni cambiar la compresión de una tabla ejecutando el comando ANALYZE COMPRESSION en una tabla que ya contenga datos. Por ejemplo, puede ejecutar ANALYZE COMPRESSION si desea analizar la compresión de una tabla para utilizarla más adelante y presentar las instrucciones del lenguaje de definición de datos (DDL) existente.
La compresión automática equilibra el rendimiento general al elegir las codificaciones de compresión. Los exámenes de rango restringido podrían tener un rendimiento deficiente cuando las columnas de clave con ordenación se comprimen mucho más que otras columnas en la misma consulta. Como resultado, la compresión automática omitirá la fase de análisis de datos en las columnas con la clave de ordenación y mantendrá los tipos de codificación definidos por el usuario.
La compresión automática elige la codificación RAW si no se ha definido explícitamente ningún tipo de codificación. ANALYZE COMPRESSION hace lo mismo. Para obtener un rendimiento óptimo de las consultas, considere la posibilidad de utilizar RAW con las claves de ordenación.
Cómo funciona la compresión automática
Cuando el parámetro COMPUDATE está establecido en ON, el comando COPY aplica la compresión automática siempre que se ejecute con una tabla de destino y todas las columnas de la tabla tengan codificación RAW o no tengan codificación.
Para aplicar la compresión automática en una tabla vacía, independientemente de sus codificaciones de compresión actuales, ejecute el comando COPY con la opción COMPUPDATE establecida en ON. Para desactivar la compresión automática, ejecute el comando COPY con la opción COMPUPDATE establecida en OFF.
No puede aplicar la compresión automática a una tabla que ya tiene datos.
nota
El análisis de compresión automático requiere suficientes filas en los datos cargados (al menos 100 000 filas por sector) con objeto de generar una muestra significativa.
La compresión automática realiza estas operaciones en segundo plano como parte de la transacción de carga:
-
Una muestra inicial de filas se carga desde el archivo de entrada. El tamaño de la muestra se basa en el valor del parámetro COMPROWS. El valor predeterminado es 100,000.
-
Las opciones de compresión se seleccionan para cada columna.
-
Las filas de muestra se eliminan de la tabla.
-
La tabla se recrea con las codificaciones de compresión seleccionadas.
-
El archivo de entrada completo se carga y se comprime con las codificaciones nuevas.
Una vez ejecutado el comando COPY, la tabla se encuentra completamente cargada, comprimida y lista para su uso. Si carga más datos con posterioridad, las filas agregadas se comprimen según la codificación existente.
Si solo desea realizar un análisis de compresión, ejecute ANALYZE COMPRESSION, lo cual es más eficiente que ejecutar COPY por completo. Luego, puede evaluar los resultados para decidir si usar la compresión automática o recrear la tabla manualmente.
La compresión automática es compatible solo para el comando COPY. De manera alternativa, puede aplicar la codificación de compresión manualmente al crear la tabla. Para obtener información acerca de la codificación de compresión manual, consulte Uso de la compresión de columnas.
Ejemplo de compresión automática
En este ejemplo, se asume que la base de datos TICKIT tiene una copia de la tabla LISTING denominada BIGLIST y que usted desea aplicar la compresión automática en esta tabla una vez cargada con, aproximadamente, 3 millones de filas.
Pasos para cargar y comprimir una tabla automáticamente
-
Asegúrese de que la tabla esté vacía. Puede aplicar la compresión automática solamente a una tabla vacía:
TRUNCATE biglist;
-
Cargue la tabla con un comando COPY único. Aunque la tabla esté vacía, cierta codificación podría haberse especificado con anterioridad. Para facilitar que Amazon Redshift realice un análisis de compresión, establezca el parámetro COMPUPDATE en ON.
COPY biglist FROM 's3://DOC-EXAMPLE-BUCKET/biglist.txt' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' DELIMITER '|' COMPUPDATE ON;
Como no se especifica una opción COMPROWS, se usa el tamaño de la muestra predeterminado y recomendado, que es 100 000 filas por sector.
-
Observe el esquema nuevo para la tabla BIGLIST con objeto de revisar los esquemas de codificación seleccionados de manera automática.
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
-
Compruebe que se haya cargado la cantidad de filas esperada:
select count(*) from biglist;
count --------- 3079952 (1 row)
Cuando, posteriormente, se agreguen filas a esta tabla mediante instrucciones COPY o INSERT, se aplican las mismas codificaciones de compresión.