Implementar o WLM automático
Com o gerenciamento automático de workload (WLM), o Amazon Redshift gerencia a simultaneidade de consultas e a alocação de memória. Você pode criar até oito filas com os identificadores de classe de serviço 100–107. Cada fila tem uma prioridade. Para ter mais informações, consulte Prioridade da consulta.
O WLM automático determina a quantidade de recursos que as consultas precisam e ajusta a simultaneidade com base na workload. Quando consultas que exigem grandes quantidades de recursos estiverem no sistema (por exemplo, uniões de hash entre tabelas grandes), a simultaneidade será menor. Quando consultas mais leves (como inserções, exclusões, varreduras ou agregações simples) forem enviadas, a simultaneidade será maior.
O WLM automático é separado da aceleração de consulta breve (SQA) e avalia as consultas de maneira diferente. O WLM automático e a SQA funcionam em conjunto para permitir que consultas leves e de execução breve sejam concluídas mesmo quando consultas de execução longa e com grande utilização de recursos estão ativas. Para obter mais informações sobre SQA, consulte Aceleração de consulta breve.
O Amazon Redshift habilita o WLM automático por meio de grupos de parâmetros:
Se seus clusters usam o grupo de parâmetro padrão, o Amazon Redshift habilita o WLM automático para eles.
Se os clusters usarem grupos de parâmetros padrão, será possível configurar os clusters para habilitar o WLM automático. Recomendamos que você crie um grupo de parâmetros separado para a configuração do WLM automático.
Para configurar o WLM, edite o parâmetro wlm_json_configuration
em um grupo de parâmetros que possa ser associado a um ou mais clusters. Para ter mais informações, consulte Modificar a configuração do WLM.
As filas de consulta são definidas na configuração do WLM. Você pode adicionar filas de consultas adicionais à configuração do WLM padrão, até um total de oito filas de usuários. Você pode configurar o seguinte para cada fila de consultas:
-
Prioridade
-
Modo de escalabilidade da simultaneidade
-
Grupos de usuários
-
Grupos de consultas
-
Regras de monitoramento de consulta
Prioridade
É possível definir a importância relativa de consultas em um workload definindo um valor de prioridade. A prioridade é especificada para uma fila e herdada por todas as consultas associadas à fila. Para ter mais informações, consulte Prioridade da consulta.
Modo de escalabilidade da simultaneidade
Quando a escalabilidade de simultaneidade está habilitada, o Amazon Redshift adiciona automaticamente capacidade de cluster quando necessário para processar um aumento nas consultas de leitura e gravação simultâneas. Seus usuários veem os dados mais atuais, sejam as consultas executadas no cluster principal ou em um cluster de escalabilidade de simultaneidade.
Gerencie quais consultas são enviadas para o cluster de escalabilidade da simultaneidade configurando filas do WLM. Ao habilitar a escalabilidade de simultaneidade para uma fila, as consultas qualificadas são enviadas ao cluster de escalabilidade de simultaneidade em vez de aguardar na fila. Para ter mais informações, consulte Escalabilidade da simultaneidade.
Grupos de usuários
Você pode atribuir um conjunto de grupos de usuários a uma fila especificando o nome de cada grupo de usuários ou usando curingas. Quando um membro de um grupo de usuários listado executa uma consulta, esta é executada na fila correspondente. Não há limite definido quanto ao número de grupos de usuários que podem ser atribuídos a uma fila. Para ter mais informações, consulte Atribuir consultas a filas com base em grupos de usuários.
Grupos de consultas
Você pode atribuir um conjunto de grupos de consultas a uma fila especificando o nome de cada grupo de consultas ou usando curingas. Um grupo de consultas é apenas um rótulo. No tempo de execução, é possível atribuir o rótulo do grupo de consultas a uma série de consultas. Todas as consultas atribuídas a um grupo de consultas listado são executadas na fila correspondente. Não há limite definido para o número de grupos de consultas que podem ser atribuídos a uma fila. Para ter mais informações, consulte Atribuir uma consulta a um grupo de consultas.
Curingas
Se os curingas estiverem habilitados na configuração da fila WLM, você pode atribuir grupos de usuários e grupos de consulta a uma fila individualmente ou usando curingas no estilo shell do Unix. A comparação de padrões não diferencia maiúsculas de minúsculas.
Por exemplo, o caractere curinga “*” corresponde a qualquer número de caracteres. Portanto, se você adicionar dba_*
à lista de grupos de usuários para uma fila, qualquer consulta executada por usuário, que pertença a um grupo com um nome que começa com dba_
, será atribuída a essa fila. Os exemplos são dba_admin
ou DBA_primary
. O caractere curinga “?” corresponde a qualquer caractere único. Portanto, se a fila incluir o grupo de usuários dba?1
, os grupos de usuários chamados dba11
e dba21
corresponderão, mas dba12
não corresponderá.
Por padrão, os curingas não estão habilitados.
Regras de monitoramento de consulta
As regras de monitoramento de consultas definem limites de performance baseados em métricas para filas do WLM e especificam qual ação tomar quando uma consulta vai além desses limites. Por exemplo, para uma fila dedicada a consultas rápidas, convém criar uma regra que cancele consultas executadas por mais de 60 segundos. Para acompanhar consultas mal projetadas, convém ter outra regra que registre consultas que contenham loops aninhados. Para ter mais informações, consulte Regras de monitoramento de consulta do WLM.
Verificação do WLM automático
Para verificar se o WLM automático está habilitado, execute a seguinte consulta. Se a consulta retornar pelo menos uma linha, o WLM automático estará habilitado.
select * from stv_wlm_service_class_config where service_class >= 100;
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 WLM automático usam as classes de serviço 100 a 107.
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 descobrir quais consultas foram executadas pelo WLM automático 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 >= 100 and a.final_state = 'Completed' order by b.query desc limit 5;