Trabajo con aceleración de consultas cortas - Amazon Redshift

Trabajo con aceleración de consultas cortas

La aceleración de consultas cortas (SQA) da prioridad a una serie de consultas seleccionadas que se ejecutan rápidamente frente a consultas que tardan más en ejecutarse. SQA ejecuta las consultas cortas 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. Con SQA, las consultas cortas se ejecutan con mayor rapidez y los usuarios tardan menos en ver los resultados.

Si habilita SQA, podrá reducir las colas de administración de cargas de trabajo (WLM) dedicadas a la ejecución de consultas cortas. Además, las consultas de larga ejecución no necesitan competir con las consultas cortas por los slots de las colas, por lo que las colas de WLM se pueden configurar para que utilicen menos slots 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.

Las instrucciones CREATE TABLE AS (CTAS) y las consultas de solo lectura, como las instrucciones SELECT, son aptas para SQA.

Amazon Redshift utiliza un algoritmo de machine learning para analizar cada una de las consultas que reúnan los requisitos necesarios y predecir su tiempo de ejecución. De forma predeterminada, WLM asigna dinámicamente un valor para el tiempo de ejecución máximo de SQA en función del análisis de la carga de trabajo del clúster. Como alternativa, puede especificar un valor fijo comprendido entre 1 y 20 segundos. Si el tiempo de ejecución previsto de la consulta es inferior al tiempo de ejecución máximo de SQA definido o asignado dinámicamente y la consulta está esperando en una cola de WLM, SQA separa la consulta de las colas de WLM y la programa para su ejecución prioritaria. Si una consulta tarda más en ejecutarse que el tiempo de ejecución máximo de SQA, WLM la mueve a la primera cola de WLM coincidente en función de las reglas de asignación de colas de WLM. Con el tiempo, las predicciones mejoran, ya que SQA va aprendiendo de los patrones de consulta.

De forma predeterminada, la SQA está habilitada en el grupo de parámetros predeterminados y para todos los grupos de parámetros nuevos. Para desactivar la SQA en la consola de Amazon Redshift, modifique la configuración de la WLM de un grupo de parámetros y desmarque Enable short query acceleration (Habilitar la aceleración de consultas cortas). Como práctica recomendada, es conveniente utilizar un número de slots de consulta de WLM igual o inferior a 15 para mantener un nivel óptimo en el rendimiento general del sistema. Para obtener información sobre cómo modificar las configuraciones de la WLM, consulte Configuración de la administración de cargas de trabajo en la Guía de administración de Amazon Redshift.

Tiempo máximo de ejecución de consultas cortas

Si se habilita SQA, WLM establece en dynamic el tiempo de ejecución máximo de las consultas cortas de forma predeterminada. Le recomendamos que mantenga este valor para definir el tiempo de ejecución máximo de SQA. Puede anular el ajuste predeterminado especificando un valor fijo comprendido entre 1 y 20 segundos.

En algunos casos, podría plantearse la posibilidad de utilizar otros valores para el tiempo de ejecución máximo de SQA y mejorar así el rendimiento del sistema. En estos casos, analice la carga de trabajo para determinar el tiempo de ejecución máximo de la mayoría de las consultas cortas. La consulta siguiente devuelve el tiempo máximo de ejecución de consultas en un percentil aproximado del 70.º.

select least(greatest(percentile_cont(0.7) within group (order by total_exec_time / 1000000) + 2, 2), 20) from stl_wlm_query where userid >= 100 and final_state = 'Completed';

Una vez que haya identificado un tiempo máximo de ejecución que funcione bien con la carga de trabajo, no necesitará modificarlo salvo que la carga de trabajo cambie considerablemente.

Monitorización de SQA

Para saber si SQA está habilitado, ejecute la consulta siguiente. Si la consulta devuelve una fila, SQA está habilitado.

select * from stv_wlm_service_class_config where service_class = 14;

En la consulta siguiente, se muestra el número de consultas que pasaron por cada cola de consultas (clase de servicio). También se muestra el tiempo de ejecución medio, el número de consultas con un tiempo de espera establecido en el percentil 90 y el tiempo de espera medio. Las consultas de SQA utilizan la clase de servicio 14.

select final_state, service_class, count(*), avg(total_exec_time), percentile_cont(0.9) within group (order by total_queue_time), avg(total_queue_time) from stl_wlm_query where userid >= 100 group by 1,2 order by 2,1;

Para saber cuántas consultas ha seleccionado SQA y se han completado correctamente, ejecute la consulta siguiente.

select a.queue_start_time, a.total_exec_time, label, trim(querytxt) from stl_wlm_query a, stl_query b where a.query = b.query and a.service_class = 14 and a.final_state = 'Completed' order by b.query desc limit 5;

Para buscar las consultas seleccionadas por SQA que han agotado el tiempo de espera, ejecute la consulta siguiente.

select a.queue_start_time, a.total_exec_time, label, trim(querytxt) from stl_wlm_query a, stl_query b where a.query = b.query and a.service_class = 14 and a.final_state = 'Evicted' order by b.query desc limit 5;

Para obtener más información sobre las consultas descartadas y, de manera más general, las acciones basadas en reglas que se pueden realizar en las consultas, consulte Reglas de monitoreo de consultas de WLM.