Factores que afectan al rendimiento de las consultas
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.
-
Cantidad de nodos, procesadores o sectores: los nodos informáticos están divididos en sectores. Si hay más nodos, hay más procesadores y más 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, si hay más nodos también hay más gastos, por lo que necesita encontrar un equilibrio entre el costo y el rendimiento que sea adecuado para su sistema. Para obtener más información acerca de la arquitectura de clústeres de Amazon Redshift, consulte Arquitectura del sistema de almacenamiento de datos.
-
Tipos de nodos: un clúster de Amazon Redshift puede utilizar uno de los varios tipos de nodos. 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. Para obtener más información sobre los tipos de nodos, consulte Información general de los clústeres de Amazon Redshift en la Guía de administración de Amazon Redshift.
-
Distribución de datos: Amazon Redshift almacena los datos de las tablas en los nodos informáticos 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. Para obtener más información, consulte Distribución de datos para la optimización de consultas.
-
Ordenación de los datos: Amazon Redshift almacena los datos de las tablas en el disco en un determinado orden, en función de las claves de ordenación de una tabla. El optimizador y el procesador de consultas utilizan la información de ubicación de los datos para reducir la cantidad de bloques que se deben examinar y, por ende, mejorar la velocidad de la consulta. Para obtener más información, consulte Claves de clasificación.
-
Tamaño del conjunto de datos: un mayor volumen de datos en el clúster puede ralentizar el rendimiento de las consultas, ya que es necesario examinar y redistribuir más filas. Puede mitigar este efecto si limpia y archiva periódicamente los datos y si utiliza un predicado para restringir el conjunto de datos de las consultas.
-
Operaciones simultáneas: ejecutar distintas operaciones a la vez puede afectar el rendimiento de las consultas. Cada operación utiliza uno o más slots de una cola de consultas disponible y utiliza la memora asociada a esos slots. Si hay otras operaciones en ejecución, es posible que no haya suficientes slots de colas de consulta disponibles. En este caso, la consulta tiene que esperar hasta que se abren slots para empezar a procesarse. Para obtener más información acerca de la creación y la configuración de colas de consultas, consulte Administración de la carga de trabajo.
-
Estructura de la consulta: la forma en la que está escrita la consulta afecta el rendimiento. Siempre que sea posible, escriba las consultas para que procesen y devuelvan la menor cantidad de datos que satisfagan sus necesidades. Para obtener más información, consulte Prácticas recomendadas de Amazon Redshift para el diseño de consultas.
-
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 puede ser particularmente evidente cuando ejecuta consultas aisladas. 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 ejecuciones 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 la caché de compilación se vacía y el código se vuelve a compilar cuando se ejecutan consultas después de una actualización de la versión. Si las consultas tienen acuerdos de nivel de servicio (SLA) estrictos, le recomendamos que ejecute previamente segmentos de consulta que escaneen los datos de las tablas de clústeres. Esto permite que Amazon Redshift almacene en caché los datos de la tabla base, lo que reduce el tiempo de planificación de las consultas tras la actualización de una 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.