Optimización del rendimiento de Amazon Redshift - Claves de distribución, claves de ordenación y WLM
Explicamos la selección de estilos de distribución y claves de ordenación en Redshift, el diseño de la gestión de cargas de trabajo (WLM) y la aceleración de consultas con AQUA.
Selección del estilo de distribución
Redshift distribuye los datos entre los slices de los nodos de cómputo. La selección del estilo de distribución es la decisión de diseño más importante que afecta directamente al rendimiento de las consultas. La distribución KEY distribuye los datos según los valores de una columna especificada, colocando las filas con el mismo valor de clave en el mismo slice. Al especificar como KEY una columna utilizada frecuentemente en JOIN, se elimina la necesidad de redistribuir datos (transferencia de red) durante el JOIN, logrando una mejora significativa del rendimiento. La distribución EVEN distribuye uniformemente mediante round-robin y es adecuada para tablas sin patrones de JOIN específicos. La distribución ALL copia la tabla completa a todos los nodos y es efectiva para JOIN con tablas de dimensiones pequeñas. La distribución AUTO permite que Redshift seleccione automáticamente según el tamaño de la tabla: ALL para tablas pequeñas y EVEN para tablas grandes.
Claves de ordenación y mapas de zona
Al configurar una clave de ordenación, los datos se almacenan en disco ordenados por los valores de esa columna. Redshift registra los valores mínimo y máximo de cada bloque como mapas de zona, y las condiciones de filtro en la cláusula WHERE omiten los bloques fuera del rango del mapa de zona. Al configurar una columna de fecha como clave de ordenación y aplicar un filtro como WHERE created_at > '2026-01-01', solo se escanean los bloques del período correspondiente, reduciendo significativamente la E/S. Las claves de ordenación compuestas combinan múltiples columnas, siendo la primera columna la que filtra de forma más efectiva. Las claves de ordenación intercaladas asignan un peso igual a cada columna y son efectivas sin importar qué columna se use para filtrar, aunque la carga de VACUUM es mayor.
Gestión de cargas de trabajo y AQUA
El WLM automático optimiza automáticamente la asignación de colas y la distribución de memoria según la complejidad y los requisitos de recursos de las consultas. Resuelve el problema de que las consultas cortas de paneles sean bloqueadas por consultas ETL de larga duración, asignando recursos apropiados a las consultas de alta prioridad. Con el WLM manual se pueden definir hasta 8 colas y enrutar consultas según grupos de usuarios o grupos de consultas. AQUA es una función disponible en instancias RA3 que ejecuta operaciones de filtrado y agregación en hardware personalizado de la capa de almacenamiento. Reduce la cantidad de datos transferidos a los nodos de cómputo y acelera las consultas intensivas en escaneo hasta 10 veces.
Impacto en costos de la optimización del rendimiento
Una optimización adecuada del rendimiento conduce directamente a la reducción de costos. Optimizar las claves de distribución para reducir la redistribución de datos entre nodos acorta el tiempo de ejecución de consultas y disminuye el consumo de RPU en Serverless. Configurar claves de ordenación para mejorar la tasa de omisión de mapas de zona reduce la cantidad de datos escaneados y los costos de E/S. AQUA (Advanced Query Accelerator) está disponible sin costo adicional en nodos RA3 y descarga el procesamiento de cláusulas LIKE y filtrado a la capa de almacenamiento para mejorar el rendimiento de las consultas.
Análisis de consultas y planes de ejecución
El primer paso de la optimización del rendimiento es identificar qué consultas son lentas. Redshift cuenta con vistas del sistema que registran el historial y la duración de las consultas ejecutadas, y en ellas puede encontrar las consultas problemáticas. Si revisa el plan de ejecución de una consulta, verá dónde se consume el tiempo y si se produce un gran movimiento de datos entre nodos. Si aparecen escaneos completos inesperados o combinaciones ineficientes, esos son los objetivos de mejora. Identificar los cuellos de botella no por suposiciones, sino a partir de datos medidos y planes de ejecución, es el punto de partida de una mejora eficaz.
Mantenimiento de tablas
En Redshift, al repetir actualizaciones y eliminaciones de datos, la disposición interna de los datos se desordena y el rendimiento de las consultas a veces baja de forma gradual. El trabajo de mantenimiento que pone esto en orden es importante. Ejecutando de forma adecuada el proceso que reorganiza el orden de los datos y recupera el espacio eliminado, y el proceso que actualiza las estadísticas, puede mantener el rendimiento. También existe un mecanismo que los ejecuta automáticamente, pero después de realizar cambios de datos a gran escala, revise el estado. Si aprovecha la función que ajusta automáticamente la optimización de las tablas, puede mantener un buen rendimiento con menos esfuerzo de operación. El mantenimiento periódico conduce a un rendimiento estable a largo plazo.
Caché de resultados y vistas materializadas
Cuando la misma consulta se repite, calcularla desde cero cada vez es un desperdicio. Redshift cuenta con un mecanismo que reutiliza los resultados anteriores para consultas idénticas y devuelve con rapidez las consultas repetidas. Si convierte las agregaciones que ejecuta con frecuencia en vistas materializadas, que calculan y guardan los resultados de antemano, puede evitar el cálculo pesado en cada ocasión. Cuando cambien los datos de origen, actualice la vista para mantener los resultados al día. Aprovechando bien los mecanismos que reutilizan los resultados calculados, puede reducir la carga recurrente y mejorar en gran medida la respuesta de los paneles y los informes periódicos.
Supervisión continua y ciclo de optimización
La optimización del rendimiento no termina de una vez: es un esfuerzo continuo. La configuración óptima cambia con el aumento del volumen de datos y los cambios en los patrones de uso. Configure reglas de supervisión de consultas para poder detectar consultas extremadamente pesadas y ejecuciones anómalas. Mantenga un ciclo en el que identifica con regularidad las consultas lentas, revisa sus planes de ejecución y las mejora. Mida el efecto de cada mejora y confirme que realmente se volvió más rápido. Si mantiene el ciclo de supervisión, análisis, mejora y verificación, puede conservar un rendimiento de respuesta estable aunque crezca la escala de los datos.
Resumen
La optimización del rendimiento de Redshift se basa en la configuración adecuada de estilos de distribución y claves de ordenación. Identifique consultas lentas con SVL_QUERY_SUMMARY y mejore revisando las claves de distribución o añadiendo claves de ordenación. Gestione la prioridad de las cargas de trabajo con WLM automático y mejore el rendimiento de escaneo con AQUA para optimizar los tiempos de respuesta en análisis de datos a gran escala.
Referencias (recursos oficiales de AWS)
Las fuentes primarias de esta página son el sitio web y la documentación oficiales de AWS. Consulta las páginas oficiales siguientes para conocer las especificaciones y los precios más recientes.
- Amazon Redshift (página oficial)
- Amazon S3 (página oficial)
- AWS Glue (página oficial)
- Documentación de AWS (oficial)
Si esta página y la documentación oficial difieren, prevalece la documentación oficial.