Salto na fila de consultas do WLM
Com o Amazon Redshift, é possível gerenciar a simultaneidade de workloads e a alocação de recursos habilitando o salto na fila de consultas do gerenciamento de workloads (WLM). Esse recurso permite que as consultas “saltem” temporariamente de uma fila atribuída para uma fila de maior prioridade quando os recursos estão disponíveis, melhorando o desempenho geral da consulta e a utilização do sistema. As seções a seguir apresentam orientações detalhadas sobre como configurar e utilizar o salto na fila de consultas do WLM no Amazon Redshift.
Uma consulta pode ser saltada devido a um tempo limite do WLM ou uma ação de salto da regra de monitoramento de consultas (QMR). Só é possível saltar consultas em uma configuração manual do WLM.
Quando uma consulta é saltada, o WLM tenta rotear a consulta para a próxima fila correspondente com base nas regras de atribuição de filas do WLM. Se a consulta não corresponder a qualquer outra definição de fila, ela será cancelada. Ela não é atribuída à fila padrão.
Ações de tempo limite do WLM
A tabela a seguir resume o comportamento dos diferentes tipos de consultas com um tempo limite do WLM.
Tipo da consulta | Ação |
---|---|
INSERT, UPDATE e DELETE | Cancelar |
Funções definidas pelo usuário (UDFs) | Cancelar |
UNLOAD | Cancelar |
COPY | Continuar a execução |
Operações de manutenção | Continuar a execução |
Consultas somente leitura em estado returning |
Continuar a execução |
Consultas somente leitura em estado running |
Reatribuir ou reiniciar |
CREATE TABLE AS (CTAS), SELECT INTO | Reatribuir ou reiniciar |
Salto na fila de tempo limite do WLM
O WLM salta os seguintes tipos de consultas quando seus tempos limite são expirados:
-
Consultas somente leitura, como instruções SELECT que estejam em estado
running
no WLM. Para encontrar o estado do WLM de uma consulta, exiba a coluna STATE na tabela do sistema STV_WLM_QUERY_STATE. -
Instruções CREATE TABLE AS (CTAS). O salto de filas do WLM oferece suporte para as instruções CTAS definidas pelo usuário e para as geradas pelo sistema.
-
Instruções SELECT INTO.
As consultas que não estão sujeitas ao tempo limite do WLM continuam a ser executadas na fila original até que sejam concluídas. Os seguintes tipos de consultas não estão sujeitos ao tempo limite do WLM:
-
Instruções COPY
-
Operações de manutenção, como ANALYZE e VACUUM
-
Consultas somente leitura, como instruções SELECT que estejam em estado
returning
no WLM. Para encontrar o estado do WLM de uma consulta, exiba a coluna STATE na tabela do sistema STV_WLM_QUERY_STATE.
Consultas que não estão qualificadas para a operação de salto por tempo limite do WLM são canceladas quando seus tempos limite expiram. Os seguintes tipos de consultas não estão qualificados para a operação de salto por tempo limite do WLM:
-
Instruções INSERT, UPDATE e DELETE
-
Instruções UNLOAD
-
Funções definidas pelo usuário (UDFs)
Consultas reatribuídas e reiniciadas devido ao tempo limite do WLM
Quando uma consulta é saltada e nenhuma fila correspondente é encontrada, a consulta é cancelada.
Quando uma consulta é saltada e uma fila correspondente é encontrada, o WLM tenta reatribuir a consulta à nova fila. Caso não seja possível reatribuir uma consulta, ela é reiniciada em uma fila nova, como descrito a seguir.
Uma consulta somente será reatribuída se todas as afirmações a seguir forem verdadeiras:
-
Uma fila correspondente foi encontrada.
-
A fila nova tem slots livres suficientes para executar a consulta. Uma consulta pode exigir vários slots se o parâmetro wlm_query_slot_count foi definido com um valor maior que 1.
-
A fila nova tem, no mínimo, a mesma quantidade de memória disponível usada pela consulta no momento.
Se a consulta for reatribuída, ela continuará sendo executada na fila nova. Os resultados intermediários são conservados, de forma que o efeito sobre o tempo total de execução é mínimo.
Se a consulta não puder ser reatribuída, ela será cancelada e reiniciada na nova fila. Os resultados intermediários são excluídos. A consulta espera na fila e inicia a execução quando há slots suficientes disponíveis.
Ações de salto do QMR
A tabela a seguir resume o comportamento dos diferentes tipos de consultas com uma ação de salto do QMR.
Tipo da consulta | Ação |
---|---|
COPY | Continuar a execução |
Operações de manutenção | Continuar a execução |
Funções definidas pelo usuário (UDFs) | Continuar a execução |
UNLOAD | Reatribuir ou continuar a execução |
INSERT, UPDATE e DELETE | Reatribuir ou continuar a execução |
Consultas somente leitura em estado returning |
Reatribuir ou continuar a execução |
Consultas somente leitura em estado running |
Reatribuir ou reiniciar |
CREATE TABLE AS (CTAS), SELECT INTO | Reatribuir ou reiniciar |
Para saber se uma consulta que foi saltada pelo QMR foi reatribuída, reiniciada ou cancelada, consulte a STL_WLM_RULE_ACTIONtabela de log do sistema.
Consultas reatribuídas e reiniciadas devido à ação de salto do QMR
Quando uma consulta é saltada e nenhuma fila correspondente é encontrada, a consulta é cancelada.
Quando uma consulta é saltada e uma fila correspondente é encontrada, o WLM tenta reatribuir a consulta à nova fila. Caso não seja possível reatribuir uma consulta, ela será reiniciada na fila nova ou continuará a ser executada na fila original, como descrito a seguir.
Uma consulta somente será reatribuída se todas as afirmações a seguir forem verdadeiras:
-
Uma fila correspondente foi encontrada.
-
A fila nova tem slots livres suficientes para executar a consulta. Uma consulta pode exigir vários slots se o parâmetro wlm_query_slot_count foi definido com um valor maior que 1.
-
A fila nova tem, no mínimo, a mesma quantidade de memória disponível usada pela consulta no momento.
Se a consulta for reatribuída, ela continuará sendo executada na fila nova. Os resultados intermediários são conservados, de forma que o efeito sobre o tempo total de execução é mínimo.
Caso não seja possível reatribuir uma consulta, ela será reiniciada ou continuará a ser executada na fila original. Se a consulta for reiniciada, ela será cancelada e reiniciada na nova fila. Os resultados intermediários são excluídos. A consulta espera na fila e inicia a execução quando há slots suficientes disponíveis.