Factores de rendimiento de las consultas para Amazon Redshift - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Factores de rendimiento de las consultas para Amazon Redshift

Hay una serie de factores que pueden afectar al rendimiento de las consultas. Los siguientes aspectos de sus datos, su clúster y de las operaciones de la base de datos influyen en el tiempo de procesamiento de sus consultas:

Propiedades de la tabla

Las tablas de Amazon Redshift son las unidades fundamentales para almacenar datos en Amazon Redshift y cada tabla tiene un conjunto de propiedades que determinan su comportamiento y accesibilidad. Algunas de estas propiedades son la clasificación, el estilo de distribución, la codificación por compresión y muchas otras. Entender estas propiedades es fundamental para optimizar el rendimiento, la seguridad y la rentabilidad de las tablas de Amazon Redshift.

Claves de clasificación

Amazon Redshift almacena los datos en disco en un determinado orden en función de las clave de clasificación de una tabla. El optimizador y el procesador de consultas utilizan la información de ubicación de los datos en el nodo de computación para reducir la cantidad de bloques que se deben examinar. Esto mejora considerablemente la velocidad de las consultas al reducir la cantidad de datos que se tienen que procesar. Le recomendamos que utilice claves de clasificación para facilitar los filtros de la cláusula WHERE. Para obtener más información, consulte Uso de las claves de clasificación en la documentación de Amazon Redshift.

Compresión de datos

La compresión de datos reduce los requisitos de almacenamiento, lo que disminuye la E/S del disco y mejora el rendimiento de las consultas. Cuando se ejecuta una consulta, los datos comprimidos se leen en la memoria y luego se descomprimen cuando se ejecuta la consulta. Al cargar menos datos en la memoria, Amazon Redshift puede asignar más memoria al analizar los datos. Como el almacenamiento en columnas guarda los datos similares de forma secuencial, Amazon Redshift puede aplicar codificaciones de compresión adaptables que estén asociadas específicamente a los tipos de datos en columnas. La mejor forma de habilitar la compresión de datos en las columnas de las tablas es mediante la opción AUTO de Amazon Redshift de aplicar las codificaciones de compresión óptimas cuando se carga la tabla con los datos. Para obtener más información sobre el uso de la compresión automática de datos, consulte Carga de tablas con compresión automática en la documentación de Amazon Redshift.

Distribución de datos

Amazon Redshift almacena los datos en los nodos de computación en función del estilo de distribución de la tabla. Cuando ejecuta una consulta, el optimizador de consultas redistribuye los datos a los nodos informáticos según se necesite para realizar uniones y agregaciones. Elegir el estilo de distribución correcto para una tabla ayuda a reducir el impacto del paso de redistribución al localizar los datos en el lugar que deben estar, antes de que se realicen las combinaciones. Le recomendamos que utilice claves de distribución para facilitar las combinaciones más comunes. Para obtener más información, consulte Uso de los estilos de distribución de datos en la documentación de Amazon Redshift.

Información de tablas

Aunque, desde el primer momento, Amazon Redshift proporciona un rendimiento líder en el sector para la mayoría de las cargas de trabajo, mantener los clústeres de Amazon Redshift ejecutándose de forma correcta requiere tareas de mantenimiento. Al actualizar y eliminar datos, se crean filas inactivas que hay que eliminar, e incluso las tablas que solo se adjuntan se tienen que volver a ordenar si el orden de incorporación no es coherente con la clave de clasificación.

Vacuum

El proceso de succión en Amazon Redshift es esencial para el buen estado y el mantenimiento de su clúster de Amazon Redshift. También afecta al rendimiento de las consultas. Como las eliminaciones y las actualizaciones marcan los datos antiguos pero en realidad no los eliminan, debe utilizar la succión para recuperar el espacio en disco que ocupaban las filas de la tabla que las operaciones UPDATE y DELETE anteriores marcaron para su eliminación. Amazon Redshift puede ordenar y realizar una operación VACUUM DELETE de forma automática en las tablas en segundo plano.

Para limpiar las tablas tras una carga o una serie de actualizaciones incrementales, también puede ejecutar el comando VACUUM, ya sea en la base de datos completa o en tablas individuales. Si las tablas tienen claves de clasificación y las cargas de las tablas no se han optimizado para ordenarlas a medida que se insertan, debe utilizar la succión para volver a ordenar los datos (lo que puede ser crucial para el rendimiento). Para obtener más información, consulte Limpieza de tablas en la documentación de Amazon Redshift.

Análisis

La operación ANALYZE actualiza los metadatos estadísticos de las tablas de una base de datos de Amazon Redshift. Mantener las estadísticas actualizadas mejora el rendimiento de las consultas, ya que permite que el planificador de consultas elija los planes óptimos. Amazon Redshift monitorea constantemente la base de datos y, de forma automática, realiza operaciones de análisis en segundo plano. Para minimizar el impacto en el rendimiento del sistema, la operación ANALYZE se ejecuta automáticamente durante periodos en los que hay poca carga de trabajo. Si decide ejecutar explícitamente el comando ANALYZE, haga lo siguiente:

  • Ejecute el comando ANALYZE antes de ejecutar cualquier consulta.

  • Ejecute el comando ANALYZE en la base de datos de manera habitual al final de cada ciclo de carga o actualización regular.

  • Ejecute el comando ANALYZE en las tablas nuevas que cree y en las tablas o columnas existentes que sufran cambios significativos.

  • Considere ejecutar operaciones ANALYZE en programas diferentes para diferentes tipos de tablas y columnas, según su uso en consultas y su tendencia al cambio.

  • Para ahorrar tiempo y recursos del clúster, al ejecutar el comando ANALYZE use la cláusula PREDICATE COLUMNS.

Configuración del clúster

Un clúster es una colección de nodos que realizan el almacenamiento y el procesamiento reales de los datos. Es fundamental configurar el clúster de Amazon Redshift correctamente si quiere lograr lo siguiente:

  • Alta escalabilidad y simultaneidad

  • Uso eficiente de Amazon Redshift

  • Mejor rendimiento

  • Menor costo

Tipo de nodo

Un clúster de Amazon Redshift puede utilizar uno de los varios tipos de nodos (RA3, DC2 y DS2). Cada tipo de nodo ofrece diferentes tamaños y límites para ayudarlo a escalar su clúster de manera adecuada. El tamaño del nodo determina la capacidad de almacenamiento, la memoria, la CPU y el precio de cada nodo del clúster. La optimización del costo y el rendimiento comienza con la elección del tipo y tamaño de nodo correctos. Para obtener más información sobre los tipos de nodos, consulte Información general de los clústeres de Amazon Redshift en la documentación de Amazon Redshift.

Tamaño y cantidad de los nodos y sectores

Un nodo de computación está particionado en sectores. Si hay más nodos, hay más procesadores y sectores lo que permite procesar sus consultas con mayor rapidez al ejecutar porciones de una consulta de manera simultánea en todos los sectores. Sin embargo, cuantos más nodos, mayor será el gasto. Esto significa que debe encontrar el equilibrio adecuado entre costo y rendimiento para su sistema. Para obtener más información sobre la arquitectura de clústeres de Amazon Redshift, consulte Arquitectura del sistema de almacenamiento de datos en la documentación de Amazon Redshift.

Administración de la carga de trabajo

La administración de la carga de trabajo (WLM) de Amazon Redshift permite a los usuarios administrar las colas de cargas de trabajo con prioridades de manera flexible, por lo que las consultas cortas y de ejecución rápida no quedarán bloqueadas en las colas detrás de las consultas de ejecución prolongada. La WLM automática utiliza algoritmos de machine learning (ML) para perfilar las consultas y colocarlas en la cola adecuada con los recursos adecuados, a la vez que administra la simultaneidad de las consultas y la asignación de memoria. Para obtener más información sobre la WLM, consulte Implementación de la administración de la carga de trabajo en la documentación de Amazon Redshift.

Aceleración de consultas cortas

La aceleración de consultas cortas (SQA) da prioridad a una serie de consultas que se ejecutan rápidamente frente a consultas que tardan más en ejecutarse. SQA ejecuta las consultas en un espacio dedicado, de forma que estas consultas no tienen que esperar en las colas detrás de otras consultas más largas. SQA solamente da prioridad a las consultas de corta ejecución y a las consultas que están en una cola definida por el usuario. Si usa SQA, las consultas cortas se ejecutan con mayor rapidez y tardará menos en ver los resultados. Si habilita SQA, podrá reducir o eliminar las colas de WLM dedicadas a las consultas cortas. Además, las consultas largas no necesitan competir por los espacios de una cola de WLM. Esto significa que puede configurar las colas de WLM para que utilicen menos espacios de consulta. Si se utiliza una simultaneidad más baja, el rendimiento de las consultas aumenta y el rendimiento de todo el sistema mejora con la mayoría de las cargas de trabajo. Para obtener más información sobre SQA, consulte Uso de la aceleración de consultas cortas en la documentación de Amazon Redshift.

Consultas SQL

Una consulta de base de datos es una solicitud de los datos de una base de datos. La solicitud debe proceder en un clúster de Amazon Redshift mediante SQL. Amazon Redshift admite herramientas de cliente SQL que se conectan a través de Java Database Connectivity (JDBC) y Open Database Connectivity (ODBC). Puede utilizar la mayoría de las herramientas de cliente SQL compatibles con los controladores JDBC u ODBC.

Estructura de consulta

La forma en la que está escrita la consulta afecta el rendimiento. Le recomendamos que escriba consultas de forma que se tenga que procesar y devolver la menor cantidad de datos que sea necesaria para satisfacer sus necesidades. Para obtener más información sobre cómo estructurar las consultas, consulte la sección Prácticas recomendadas para diseñar consultas de Amazon Redshift de esta guía.

Compilación de código

Amazon Redshift genera y compila código para cada plan de ejecución de consultas. El código compilado se ejecuta más rápido porque elimina la sobrecarga de tener que recurrir a un intérprete. Siempre tendrá algún costo adicional la primera vez que genere y compile código. Por este motivo, el rendimiento de la primera vez que ejecuta una consulta puede ser confuso. El costo adicional podría ser particularmente evidente cuando ejecuta consultas aisladas. Le recomendamos que ejecute la consulta por segunda vez para determinar su rendimiento habitual.

Amazon Redshift utiliza un servicio de compilación sin servidor para escalar las compilaciones de consultas más allá de los recursos informáticos de un clúster de Amazon Redshift. Los segmentos de código compilado se almacenan en caché de manera local en el clúster y en una caché virtualmente ilimitada. Esta caché se conserva después del reinicio del clúster. Las invocaciones posteriores de la misma consulta se realizan en menos tiempo, ya que se puede omitir la fase de compilación. La caché no es compatible con todas las versiones de Amazon Redshift, por lo que el código se vuelve a compilar cuando se ejecutan consultas después de una actualización de la versión. Mediante el uso de un servicio de compilación escalable, Amazon Redshift puede compilar código en paralelo para proporcionar un rendimiento constante y rápido. La magnitud de la aceleración de la carga de trabajo depende de la complejidad y la simultaneidad de las consultas.