Implementar o WLM manual - Amazon Redshift

Implementar o WLM manual

Com WLM manual, é possível gerenciar a performance do sistema e a experiência dos usuários modificando a configuração de WLM a fim de criar filas separadas para as consultas demoradas e as rápidas.

Quando os usuários executam consultas no Amazon Redshift, as consultas são encaminhadas para filas de consulta. Cada fila de consultas contém alguns slots de consulta. Cada fila recebe uma parte da memória disponível do cluster. A memória de uma fila é dividida entre os slots de consulta da fila. Você pode habilitar o Amazon Redshift para gerenciar a simultaneidade de consultas com WLM automático. Para ter mais informações, consulte Implementar o WLM automático.

Como alternativa, é possível configurar as propriedades do WLM para cada fila de consultas. Faça isso especificando a maneira pela qual a memória é alocada entre slots e como as consultas podem ser roteadas para filas específicas em runtime. Você também pode configurar as propriedades de WLM para cancelar consultas demoradas.

Por padrão, o Amazon Redshift configura as seguintes filas de consulta:

  • Uma fila de usuários avançados

    A fila de superusuários é reservada somente para estes e não pode ser configurada. Use essa fila quando precisar executar consultas que afetam o sistema ou para fins de solução de problemas. Por exemplo, use essa fila quando você precisar cancelar a consulta demorada de um usuário ou adicionar usuários ao banco de dados. Não use para realizar consultas de rotina. A fila não é exibida no console, mas aparece nas tabelas do sistema do banco de dados como a quinta fila. Para executar uma consulta na fila de superusuários, um usuário deve estar conectado como superusuário e executar a consulta usando o grupo de consultas superuser predefinido.

  • Uma fila de usuários padrão

    A fila padrão é configurada inicialmente para executar simultaneamente cinco consultas. Ao usar WLM manual, você pode alterar as propriedades de simultaneidade, tempo limite e alocação da memória da fila padrão, mas não pode especificar grupos de usuários ou consultas. A fila padrão deve ser a última na configuração do WLM. Algumas consultas que não são roteadas para outras filas são executadas na fila padrão.

As filas de consultas são definidas na configuração do WLM. A configuração do WLM é um parâmetro editável (wlm_json_configuration) em um parameter group, que pode ser associado a um ou mais clusters. Para obter mais informações, consulte “Configurar o gerenciamento de workload” no Guia de gerenciamento de clusters do Amazon Redshift.

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:

  • Modo de escalabilidade da simultaneidade

  • Nível de simultaneidade

  • Grupos de usuários

  • Grupos de consultas

  • Porcentagem de memória do WLM a ser usada

  • Tempo limite do WLM

  • Salto na fila de consultas do WLM

  • Regras de monitoramento de 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. Os usuários veem os dados mais recentes, sejam as consultas executadas no cluster principal ou em um cluster de escalabilidade da 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 Trabalhar com a escalabilidade de simultaneidade.

Nível de simultaneidade

As consultas em uma fila são executadas simultaneamente até que atinjam o número de slots de consulta do WLM ou o nível de simultaneidade, definido para essa fila. Em seguida, as consultas subsequentes aguardam na fila.

nota

O nível de simultaneidade do WLM é diferente do número de conexões de usuário simultâneas que podem ser estabelecidas com um cluster. Para obter mais informações, consulte “Conectar-se a um cluster” no Guia de gerenciamento de clusters do Amazon Redshift.

Em uma configuração de WLM automático (recomendada), o nível de simultaneidade é definido como Automático. O Amazon Redshift aloca memória dinamicamente para consultas, o que posteriormente determina quantas serão executadas simultaneamente. Isso se baseia nos recursos necessários para consultas em execução e consultas em fila. O WLM automático não é configurável. Para ter mais informações, consulte Implementar o WLM automático.

Em uma configuração de WLM manual, o Amazon Redshift aloca estaticamente uma quantidade fixa de memória para cada fila. A memória da fila é dividida igualmente entre os slots de consulta. Para ilustrar, se uma fila receber 20% da memória de um cluster e tiver 10 slots, cada consulta receberá 2% da memória do cluster. A alocação de memória permanece fixa, independentemente do número de consultas em execução simultânea. Devido a essa alocação de memória fixa, consultas executadas inteiramente na memória quando o número de slots é 5 talvez gravem resultados intermediários em disco, caso o número de slots seja aumentado para 20. Nesse caso, a parte de cada consulta na memória da fila é reduzida de 1/5 para 1/20. A E/S de disco adicional pode afetar a performance.

O número máximo de slots para todas as filas definidas pelo usuário é 50. Isso limita o total de slots para todas as filas, incluindo a fila padrão. A única fila que não está sujeita ao limite é a fila reservada para superusuários.

Por padrão, as filas do WLM manuais têm um nível de simultaneidade de 5. O workload pode se beneficiar de um nível de simultaneidade superior em determinados casos, como o seguinte:

  • Se muitas consultas pequenas forem forçadas a aguardar consultas demoradas, crie uma fila à parte com um número de slots superior e atribua as consultas menores a essa fila. Uma fila com um nível de simultaneidade superior tem menos memória alocada para cada slot de consulta, mas as consultas menores exigem menos memória.

    nota

    Se você habilitar a aceleração de consultas breves (SQA), o WLM priorizará automaticamente as consultas breves sobre as consultas demoradas, para que você não precise de uma fila separada para consultas breves na maioria dos fluxos de trabalho. Para ter mais informações, consulte Trabalhar com a aceleração de consulta breve.

  • Se você tiver várias consultas que acessam dados individualmente em uma única fatia, configure uma fila do WLM à parte para executar essas consultas simultaneamente. O Amazon Redshift atribui consultas simultâneas a fatias separadas, o que permite executar várias consultas em paralelo em várias fatias. Por exemplo, se uma consulta for um agregado simples com um predicado na chave de distribuição, os dados da consulta estarão localizados em uma única fatia.

Um exemplo de WLM manual

Este exemplo é um cenário simples de WLM manual para mostrar como os slots e a memória podem ser alocados. Implemente o WLM manual com três filas, que são as seguintes:

  • fila de ingestão de dados: configurada para ingerir dados. Recebe 20% da memória do cluster e tem 5 slots. Consequentemente, 5 consultas podem ser executadas simultaneamente na fila e cada uma recebe 4% da memória.

  • fila de cientistas de dados: projetada para consultas que consomem muita memória. Recebe 40% da memória do cluster e tem 5 slots. Consequentemente, 5 consultas podem ser executadas simultaneamente e cada uma recebe 8% da memória.

  • fila padrão: projetada para a maioria dos usuários na organização. Isso inclui grupos de vendas e contabilidade, que normalmente têm consultas de curta ou média duração que não são complicadas. Recebe 40% da memória do cluster e tem 40 slots. Essa fila pode executar 40 consultas simultaneamente, e cada consulta recebe 1% da memória. Esse é o número máximo de slots que essa fila pode ter, pois o limite total entre todas as filas é 50.

Se você estiver realizando WLM automático e sua workload exigir execução simultânea de mais de 15 consultas, recomendamos ativar a escalabilidade da simultaneidade. Isso ocorre porque o aumento da contagem de slots de consulta acima de 15 pode criar contenção de recursos do sistema e limitar a throughput geral de um único cluster. Com a escalabilidade da simultaneidade, você pode executar centenas de consultas simultâneas até um número configurado de clusters de escalabilidade da simultaneidade. O número de clusters de escalabilidade da simultaneidade é controlado por max_concurrency_scaling_clusters. Para obter mais informações sobre a escalabilidade da simultaneidade, consulte Trabalhar com a escalabilidade de simultaneidade.

Para ter mais informações, consulte Melhoria do performance de consultas do .

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 forem permitidos na configuração de fila do WLM, você poderá atribuir grupos de usuários e consultas a uma fila individualmente ou usando curingas em 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á.

Os curingas são desativados por padrão.

Porcentagem de memória do WLM a ser usada

Em uma configuração de WLM automático, a porcentagem de memória é definida como auto. Para ter mais informações, consulte Implementar o WLM automático.

Em uma configuração de WLM manual, para especificar o valor de memória disponível alocado para uma consulta, você pode definir o parâmetro WLM Memory Percent to Use. Por padrão, cada fila definida pelo usuário recebe uma parte igual da memória disponível para consultas definidas pelo usuário. Por exemplo, se você tiver quatro filas definidas pelo usuário, cada fila receberá 25 por cento da memória disponível. A fila de superusuários tem a própria memória alocada e não pode ser modificada. Para alterar a alocação, você atribui uma porcentagem de memória em inteiro a cada fila, até um total de 100 por cento. Qualquer memória não alocada é gerenciada pelo Amazon Redshift e pode ser temporariamente fornecida a uma fila se a fila solicitar memória adicional para processamento.

Por exemplo, se configurar quatro filas, você poderá alocar a memória da seguinte maneira: 20 por cento, 30 por cento, 15 por cento, 15 por cento. Os 20 por cento restantes permanecem desalocados e são gerenciados pelo serviço.

Tempo limite do WLM

O tempo limite do WLM (max_execution_time) está obsoleto. Em vez disso, crie uma regra de monitoramento de consulta (QMR) usando query_execution_time para limitar o tempo de execução decorrido para uma consulta. Para ter mais informações, consulte Regras de monitoramento de consulta do WLM.

Para limitar o valor de tempo em que as consultas em uma determinada fila do WLM têm permissão para serem usadas, você pode definir o valor de tempo limite do WLM para cada fila. O parâmetro tempo limite especifica a quantidade de tempo, em milissegundos, durante o qual o Amazon Redshift aguarda a execução de uma consulta antes de cancelar ou ignorar a consulta. O tempo limite se baseia no tempo de execução da consulta e não inclui o tempo gasto esperando em uma fila.

O WLM tenta saltar as instruções CREATE TABLE AS (CTAS) e as consultas somente leitura, como instruções SELECT. Consultas que não podem ser saltadas são canceladas. Para ter mais informações, consulte Salto na fila de consultas do WLM.

O tempo limite do WLM não se aplica a uma consulta que tenha atingido o estado de retorno. Para exibir o estado de uma consulta, consulte a tabela de sistema STV_WLM_QUERY_STATE. As instruções COPY e as operações de manutenção, como ANALYZE e VACUUM, não estão sujeitas ao tempo limite do WLM.

A função de tempo limite do WLM é semelhante ao parâmetro de configuração statement_timeout. A diferença é que, enquanto o parâmetro de configuração statement_timeout se aplica a todo o cluster, o tempo limite do WLM é específico para uma única fila na configuração do WLM.

Se statement_timeout também for especificado, o menor statement_timeout e tempo limite do WLM (max_execution_time) serão usados.

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.