Uso de claves de ordenación - Amazon Redshift

Uso de claves de ordenación

nota

Se recomienda que cree sus tablas con SORTKEY AUTO. En este caso, Amazon Redshift utiliza la optimización automática de tablas para elegir la clave de ordenación. Para obtener más información, consulte Uso de la optimización automática de tablas. En el resto de esta sección, se proporcionan detalles sobre el orden.

Cuando se crea una tabla, se pueden definir, como alternativa, una o varias de sus columnas como claves de ordenación. Cuando carga por primera vez los datos en una tabla vacía, las filas se almacenan en el disco de forma ordenada. Se transmite la información relacionada con las columnas con clave de ordenación al planificador de consultas, que utiliza esta información para construir planes que aprovechen la forma en la que se almacenan los datos. Para obtener más información, consulte CREATE TABLE. Para obtener información sobre las prácticas recomendadas a la hora de crear una clave de clasificación, consulte Elección de la clave de clasificación recomendada.

La ordenación permite encargarse eficazmente de predicados restringidos por rangos. Amazon Redshift .almacena los datos de columna en bloques de disco de 1 MB. Los valores mínimo y máximo de cada bloque se almacenan como parte de los metadatos. Si una consulta usa un predicado de rango restringido, el procesador de consultas puede usar los valores mínimos y máximos para omitir rápidamente grandes cantidades de bloques durante los análisis de las tablas. Por ejemplo, supongamos que una tabla almacena cinco años de datos ordenados por fecha y una consulta especifica un rango de fechas correspondiente a un mes. En este caso, se puede eliminar hasta el 98 % de los bloques de disco del análisis. Si los datos no están ordenados, se deben examinar más bloques del disco (posiblemente todos).

Puede especificar una clave de ordenación compuesta o intercalada. Una clave de ordenación compuesta es más eficaz cuando los predicados de la consulta usan un prefijo, que es un subconjunto ordenado de columnas de clave de ordenación. Una clave de ordenación intercalada le otorga el mismo peso a cada columna de la clave de ordenación, por lo que los predicados de la consulta pueden usar cualquier subconjunto de columnas que conforman la clave de ordenación, en cualquier orden.

Para comprender el impacto de la clave de ordenación seleccionada en el rendimiento de las consultas, utilice el comando EXPLAIN. Para obtener más información, consulte Flujo de trabajo de planificación y ejecución de consultas.

Para definir un tipo de ordenación, utilice la palabra clave INTERLEAVED o COMPOUND en su instrucción CREATE TABLE o CREATE TABLE AS. La opción predeterminada es COMPOUND. Se recomienda el COMPOUND cuando actualice las tablas a menudo con operaciones INSERT, UPDATE o DELETE. Una clave de ordenación INTERLEAVED puede usar como máximo ocho columnas. En función de los datos y del tamaño del clúster, VACUUM REINDEX necesita mucho más tiempo que VACUUM FULL ya que realiza una ejecución adicional para analizar las claves de ordenación intercaladas. La operación de clasificación y fusión tarda más tiempo para tablas intercaladas porque es posible que la clasificación intercalada tenga que reorganizar más filas que una clasificación compuesta.

Para ver las claves de ordenación de una tabla, consulte la vista de sistema SVV_TABLE_INFO.

Clasificación del diseño de datos multidimensional (versión preliminar)

La siguiente es una versión preliminar de la documentación sobre la clasificación del diseño de datos multidimensional de tablas. Tanto la documentación como la característica quedan sujetas a cambios. Se recomienda utilizar esta característica solo con clústeres de prueba y no en entornos de producción. Para obtener una vista previa de los términos y las condiciones, consulte Participación de la versión beta del servicio en Términos del servicio de AWS.
nota

Esta característica solo está disponible en la versión preliminar de los clústeres o los grupos de trabajo. Para crear un clúster de versión preliminar, consulte Crear un clúster de versión preliminar en la Guía de administración de Amazon Redshift. Para crear un grupo de trabajo de versión preliminar, consulte Crear un grupo de trabajo de vista previa en la Guía de administración de Amazon Redshift.

Una clave de clasificación de diseño de datos multidimensional es un tipo de clave de clasificación AUTO que se basa en predicados repetitivos encontrados en una carga de trabajo. Si su carga de trabajo tiene predicados repetitivos, Amazon Redshift puede mejorar el rendimiento del escaneo de tablas mediante la colocación de filas de datos que satisfagan los predicados repetitivos. En lugar de almacenar los datos de una tabla siguiendo un estricto orden de columnas, una clave de clasificación de diseño de datos multidimensional almacena los datos mediante el análisis de los predicados repetitivos que aparecen en una carga de trabajo. Se puede encontrar más de un predicado repetitivo en una carga de trabajo. Según la carga de trabajo, este tipo de clave de clasificación puede mejorar el rendimiento de muchos predicados. Amazon Redshift determina automáticamente si este método de clave de clasificación debe utilizarse para las tablas definidas con una clave de clasificación AUTO.

Por ejemplo, supongamos que tiene una tabla con los datos clasificados en orden de columna. Es posible que sea necesario examinar muchos bloques de datos para determinar si satisfacen los predicados de la carga de trabajo. Sin embargo, si los datos se almacenan en el disco siguiendo un orden de predicados, será necesario escanear menos bloques para satisfacer la consulta. En este caso, usar una clave de clasificación de diseño de datos multidimensional es beneficioso.

Para ver si una consulta utiliza una clave de diseño de datos multidimensional, consulte la columna step_attribute de la vista SYS_QUERY_DETAIL. Si el valor es multi-dimensional, entonces se habrá utilizado un diseño de datos multidimensional para la consulta. Para ver si una tabla definida con la clave de clasificación AUTO usa un diseño de datos multidimensional, consulte la columna sortkey1 de la vista SVV_TABLE_INFO. Si el valor es padb_internal_mddl_key_col, entonces se habrá utilizado un diseño de datos multidimensional para la clave de clasificación de la tabla.

Para evitar que Amazon Redshift utilice una clave de clasificación de diseño de datos multidimensional, elija una opción de clave de clasificación de tablas distinta de SORTKEY AUTO. Para obtener más información acerca de las opciones SORTKEY, consulte CREATE TABLE.

Clave de ordenación compuesta

Una clave compuesta está formada por todas las columnas presentes en la definición de la clave de ordenación, en el orden que aparecen. Una clave de ordenación compuesta es más útil cuando el filtro de una consulta aplica condiciones, como filtros y combinaciones, que usan un prefijo de clave de ordenación. Los beneficios del rendimiento de la ordenación compuesta se reducen cuando las consultas dependen solo de las columnas de ordenación secundarias, sin hacer referencia a las columnas principales. COMPOUND es el tipo de ordenación predeterminado.

Las claves de ordenación compuesta pueden acelerar las combinaciones, las operaciones GROUP BY y ORDER BY y las funciones de ventana que usan PARTITION BY y ORDER BY. Por ejemplo, una combinación de fusión, que suele ser más rápida que una combinación hash, es factible cuando los datos se distribuyen y se ordenan previamente en las columnas de combinación. Las claves de ordenación compuesta también ayudan a mejorar la compresión.

A medida que agrega filas a una tabla ordenada que ya tiene datos, la región desordenada aumenta y esto tiene un efecto significativo en el rendimiento. El efecto es mayor cuando la tabla usa una ordenación intercalada, en especial cuando las columnas de ordenación incluyen datos que aumentan de forma monótona, como las columnas de fecha o de marca temporal. Ejecute una operación VACUUM de manera periódica, sobre todo después de grandes cargas de datos, para volver a clasificar y a analizar los datos. Para obtener más información, consulte Administración del tamaño de la región no ordenada. Después hacer la limpieza para volver a ordenar los datos, se recomienda ejecutar un comando ANALYZE para actualizar los metadatos estadísticos para el planificados de consultas. Para obtener más información, consulte Análisis de tablas.

Clave de ordenación intercalada

Una clave de ordenación intercalada le otorga el mismo peso a cada columna o subconjunto de columnas en la clave de ordenación. Si hay distintas consultas que usan diferentes columnas para filtros, puede, por lo general, mejorar el rendimiento de esas consultas utilizando un estilo de ordenación intercalada. Cuando una consulta usa predicados restrictivos en las columnas de ordenación secundarias, la ordenación intercalada mejora considerablemente el rendimiento de la consulta, si se la compara con la ordenación compuesta.

importante

No utilice una clave de ordenación intercalada con atributos monótonamente crecientes, como columnas de identidad, fechas o marcas temporales.

Las mejoras de rendimiento que obtiene al implementar una clave de ordenación intercalada se deben compensar con el aumento de los tiempos de carga y de limpieza.

Las ordenaciones intercaladas son más eficaces con las consultas sumamente selectivas que filtran una o más columnas con clave de ordenación en la cláusula WHERE; por ejemplo, la consulta select c_name from customer where c_region = 'ASIA'. Los beneficios de la ordenación intercalada aumentan con la cantidad de columnas ordenadas que están limitadas.

La ordenación intercalada es más eficaz con las tablas grandes. La ordenación se aplica a cada sector. Por lo tanto, una ordenación intercalada resulta más eficaz si una tabla es lo suficientemente grande como para requerir varios bloques de 1 MB por sector. En este caso, el procesador de consultas puede omitir una proporción significativa de los bloques mediante el uso de predicados restrictivos. Para ver la cantidad de bloques que utiliza una tabla, consulte la vista de sistema STV_BLOCKLIST.

Cuando se ordena una sola columna, una ordenación intercalada puede tener un mejor rendimiento que una ordenación compuesta si los valores de la columna tienen un prefijo largo en común. Por ejemplo, los URL, por lo general, comienzan con "http://www". Las claves de ordenación compuesta usan una cantidad limitada de caracteres del prefijo, lo que genera muchas duplicaciones de claves. Las ordenaciones intercaladas utilizan un esquema de compresión interno para los valores de mapas de zonas que les permite discriminar mejor entre valores de columnas que tienen un prefijo largo en común.

Al migrar clústeres aprovisionados de Amazon Redshift a Amazon Redshift sin servidor, Redshift convierte tablas con claves de clasificación intercaladas y DISTSTYLE KEY en claves de clasificación compuestas. El DISTSTYLE no cambia. Para obtener más información sobre los estilos de distribución, consulte Uso de estilos de distribución de datos.

VACUUM REINDEX

A medida que agrega filas a una tabla ordenada que ya tiene datos, el rendimiento puede deteriorarse con el tiempo. Este deterioro ocurre tanto en las ordenaciones compuestas como en las intercaladas, pero tiene mayor efecto en las tablas intercaladas. El comando VACUUM restaura el orden, pero la operación puede tomar más tiempo para las tablas intercaladas porque fusionar datos nuevos intercalados puede implicar modificar cada bloque de datos.

Cuando las tablas se cargan por primera vez, Amazon Redshift analiza la distribución de los valores de las columnas con clave de ordenación y usa la información para intercalar de manera óptima las columnas con clave de ordenación. A medida que una tabla aumenta, la distribución de los valores de las columnas con clave de ordenación puede variar o generar un sesgo, en especial con las columnas de fecha o de marca temporal. Si el sesgo es demasiado grande, puede afectar el rendimiento. Para volver a analizar las claves de ordenación y restaurar el rendimiento, ejecute el comando VACUUM con la palabra clave REINDEX. Como el comando VACUUM REINDEX debe hacer un análisis adicional sobre los datos, puede tardar más que un comando VACUUM estándar para las tablas intercaladas. Para ver información acerca del sesgo de distribución de claves y del tiempo de la última reindexación, consulte la vista de sistema SVV_INTERLEAVED_COLUMNS.

Para obtener más información acerca de cómo determinar con qué frecuencia ejecutar el comando VACUUM y cuándo ejecutar el comando VACUUM REINDEX, consulte Decidir si reindexar.