Aceleração de consulta breve
A aceleração de consultas breves (SQA) prioriza as consultas de curta execução sobre as consultas de execução demorada. A SQA executa consultas breves em um espaço dedicado, de maneira que as consultas SQA não sejam forçadas a esperar em filas atrás de consultas mais demoradas. O SQA apenas prioriza consultas que são de execução curta e estão em uma fila definida pelo usuário. Com a SQA, consultas breves são iniciadas com mais rapidez e os usuários veem os resultados mais cedo.
Se você habilitar a SQA, poderá reduzir as filas de gerenciamento de workload (WLM) que são dedicadas à execução de consultas breves. Além disso, as consultas demoradas não precisam disputar slots em uma fila com as consultas breves, e assim você pode configurar suas filas do WLM usando menos slots de consulta. Quando você usa um nível de simultaneidade menor, a taxa de transferência de consultas aumenta e a performance geral do sistema melhora na maioria dos workloads.
As instruções CREATE TABLE AS (CTAS) e consultas somente leitura, como as instruções SELECT, são qualificadas para a SQA.
O Amazon Redshift usa um algoritmo de Machine Learning para analisar cada consulta elegível e prever o tempo de execução da consulta. Por padrão, o WLM atribui dinamicamente um valor para o tempo máximo de execução de SQA baseado na análise do workload do cluster. Como alternativa, você pode especificar um valor fixo de 1 a 20 segundos. Se o runtime previsto da consulta for menor que o runtime máximo da SQA definido ou atribuído dinamicamente e a consulta estiver aguardando em uma fila de WLM, a SQA vai separar a consulta das filas de WLM e programá-la para execução prioritária. Se uma consulta for executada por um tempo maior do que o tempo de execução máximo da SQA, o WLM moverá a consulta para a primeira fila correspondente do WLM com base nas regras de atribuição de filas do WLM. Com o passar do tempo, as previsões serão melhores pois a SQA aprenderá com os padrões das suas consulta.
O SQA é habilitado por padrão no grupo de parâmetros padrão e para todos os novos grupos de parâmetros. Para desabilitar o SQA no console do Amazon Redshift, edite a configuração do WLM para um grupo de parâmetros e desmarque Habilitar aceleração de consulta curta. Como melhor prática, recomendamos o uso de 15 ou menos slots de consulta do WLM para manter a performance geral do sistema no nível ideal. Para obter informações sobre como modificar as configurações do WLM, consulte “Configurar o gerenciamento de workload” no Guia de gerenciamento de clusters do Amazon Redshift.
Tempo máximo de execução para consultas breves
Ao permitir o SQA, o WLM define o tempo máximo de execução de consultas breves para dinâmico, por padrão. Recomendamos manter a configuração dinâmica para o tempo de execução máximo de SQA. Você pode substituir a configuração padrão especificando um valor fixo de 1 a 20 segundos.
Em alguns casos, você pode considerar o uso de valores diferentes para os valores de tempo de execução máximos de SQA a fim de melhorar a performance do sistema. Nesses casos, analise seu workload para encontrar o tempo de execução máximo para a maioria das consultas de execução breve. A seguinte consulta retorna o tempo máximo de execução para consultas com aproximadamente 70 por cento.
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';
Após identificar o valor máximo de tempo de execução que funcione bem para seu workload, não será necessário alterá-lo a menos que seus workload sejam alterados de maneira significativa.
Monitoramento da SQA
Para verificar se a SQA está habilitada, execute a seguinte consulta. Se a consulta retornar uma linha, a SQA está habilitada.
select * from stv_wlm_service_class_config where service_class = 14;
A consulta a seguir exibe o numero de consultas que passaram por cada fila de consulta (classe de serviço). Ele também mostra o tempo de execução médio, o número de consultas com tempo de espera no percentil 90º, e o tempo de espera médio. As consultas de SQA usam a classe em serviço 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 localizar as consultas que foram selecionadas pela SQA e concluídas com êxito, execute a seguinte consulta.
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 localizar as consultas que SQA selecionou mas que ultrapassaram o tempo limite, execute a seguinte consulta.
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 obter mais informações sobre consultas removidas e informações mais genéricas sobre ações baseadas em regras que podem ser realizadas em consultas, consulte Regras de monitoramento de consulta do WLM.