

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
<a name="query-performance-factors"></a>

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](#table-properties)
  + [Claves de clasificación](#table-sort-keys) (Amazon Redshift Advisor)
  + [Compresión de datos](#data-compression) (automatizado)
  + [Distribución de datos](#data-distribution) (automatizado)
  + [Información de tablas](#table-maintenance) (automatizado)
+ [Configuración del clúster](#cluster-configuration)
  + [Tipo de nodo](#node-type)
  + [Tamaño y cantidad de los nodos y sectores](#node-size)
  + [Administración de la carga de trabajo](#workload-management) (automatizado)
  + [Aceleración de consultas cortas](#sqa) (automatizado)
+ [Consulta SQL](#query)
  + [Estructura de consulta](#query-structure)
  + [Compilación de código](#code-compilation)

## Propiedades de la tabla
<a name="table-properties"></a>

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
<a name="table-sort-keys"></a>

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](https://docs.aws.amazon.com/redshift/latest/dg/t_Sorting_data.html) en la documentación de Amazon Redshift.

### Compresión de datos
<a name="data-compression"></a>

La compresión de datos reduce los requisitos de almacenamiento, lo que reduce el disco I/O 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](https://docs.aws.amazon.com/redshift/latest/dg/c_Loading_tables_auto_compress.html) en la documentación de Amazon Redshift.

### Distribución de datos
<a name="data-distribution"></a>

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](https://docs.aws.amazon.com/redshift/latest/dg/t_Distributing_data.html) en la documentación de Amazon Redshift.

### Información de tablas
<a name="table-maintenance"></a>

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
<a name="vacuum"></a>

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](https://docs.aws.amazon.com/redshift/latest/dg/t_Reclaiming_storage_space202.html) en la documentación de Amazon Redshift.

#### Análisis
<a name="analyze"></a>

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
<a name="cluster-configuration"></a>

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
<a name="node-type"></a>

Un clúster de Amazon Redshift puede utilizar uno de 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](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#working-with-clusters-overview) en la documentación de Amazon Redshift.

### Tamaño y cantidad de los nodos y sectores
<a name="node-size"></a>

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](https://docs.aws.amazon.com/redshift/latest/dg/c_high_level_system_architecture.html) en la documentación de Amazon Redshift.

### Administración de la carga de trabajo
<a name="workload-management"></a>

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](https://docs.aws.amazon.com/redshift/latest/dg/cm-c-implementing-workload-management.html) en la documentación de Amazon Redshift.

### Aceleración de consultas cortas
<a name="sqa"></a>

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](https://docs.aws.amazon.com/redshift/latest/dg/wlm-short-query-acceleration.html) en la documentación de Amazon Redshift.

## Consulta SQL
<a name="query"></a>

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
<a name="query-structure"></a>

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](best-practices-designing-queries.md) de esta guía.

### Compilación de código
<a name="code-compilation"></a>

Amazon Redshift genera y compila código optimizado para cada plan de ejecución de consultas. El código compilado se ejecuta más rápido porque elimina los gastos generales de tener que recurrir a un intérprete. *Para minimizar la latencia de las consultas nuevas y, al mismo tiempo, conservar las ventajas de rendimiento del código compilado, Amazon Redshift utiliza una técnica denominada composición.* Composition genera una estructura ligera de lógica preexistente para procesar las nuevas consultas de forma inmediata y, al mismo tiempo, compila código altamente optimizado y específico para las consultas en segundo plano. Esto elimina la compilación de la ruta crítica de ejecución de las consultas. Esto significa que las consultas nuevas se inician más rápido y ofrecen un rendimiento coherente con las ejecuciones posteriores.

Amazon Redshift también 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 compilados se almacenan en caché tanto localmente en el clúster como en una caché remota prácticamente ilimitada que persiste después de reiniciarse el clúster. Las ejecuciones posteriores de la misma consulta se realizan en menos tiempo, ya que se puede omitir la fase de compilación. Al utilizar un servicio de compilación escalable, Amazon Redshift compila el código en paralelo para ofrecer un rendimiento rápido y uniforme.