O controle de fluxo de split limita o número de varreduras de split concorrentes em uma tarefa ou em um nó. Sem esse limite, a alta concorrência de varreduras pode causar os seguintes problemas:
Em tabelas internas, as varreduras de split concorrentes competem pelos recursos de E/S dos nós de armazenamento. Isso aumenta a utilização da CPU e o uso de memória, podendo desestabilizar esses nós.
Em tabelas externas, a eficiência da varredura varia conforme a source de dados. Se o número de varreduras de split concorrentes exceder a cota, as novas varreduras consumirão recursos dos nós de computação e afetarão outras consultas, em vez de acelerar a varredura geral.
O controle de fluxo de split está ativado por padrão.
Este tópico descreve como ativar ou desativar o controle de fluxo de split e configure a cota de varreduras de split concorrentes nos níveis de tarefa e de nó.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster do AnalyticDB for MySQL com a versão V3.1.10.0 ou posterior
Para verificar a versão secundária de um cluster, consulte Como consulto a versão de um cluster do AnalyticDB for MySQL?. Para atualizar a versão secundária, entre em contato com o suporte técnico.
Como funciona
Ao executar uma consulta, o AnalyticDB for MySQL a divide em estágios. Cada estágio roda como múltiplas tarefas distribuídas pelos nós. Para varrer uma tabela, o sistema a divide em splits. Cada split é atribuído a uma tarefa, que pode processar vários splits simultaneamente.
O controle de fluxo de split opera em dois níveis:
Nível de tarefa: Cada tarefa tem uma cota para varreduras de split concorrentes. Quando o número de varreduras em execução atinge essa cota, as novas varreduras aguardam a conclusão de uma varredura ativa.
Nível de nó: Cada nó tem uma cota global. A cota por tarefa se ajusta dinamicamente com base na cota do nó: aumenta quando há capacidade ociosa e diminui quando o nó está sob carga.
Escolha uma abordagem de gerenciamento de cota
Antes de configure as cotas, decida se prefere permitir que o sistema ajuste as cotas por tarefa automaticamente ou defini-las com um valor fixo.
|
Abordagem |
Funcionamento |
Quando usar |
|
Ajuste dinâmico (recomendado) |
O sistema aumenta ou reduz a cota de cada tarefa com base na carga atual do nó |
Cargas de trabalho mistas, nas quais a disponibilidade de recursos flutua |
|
Cota fixa |
A cota por tarefa permanece fixada no valor de |
Cargas de trabalho previsíveis que exigem controle preciso de concorrência |
O ajuste dinâmico requer que o controle de fluxo de split esteja ativado.
Ative ou desative o controle de fluxo de split
O controle de fluxo de split vem ativado por padrão. Para desativá-lo ou reativá-lo, execute uma das seguintes instruções.
Para um cluster:
SET ADB_CONFIG SPLIT_FLOW_CONTROL_ENABLED=true|false;
Para uma única consulta (usando uma dica):
/*+ SPLIT_FLOW_CONTROL_ENABLED=true|false*/ SELECT * FROM table;
Para verificar se o controle de fluxo de split está atualmente ativado:
SHOW ADB_CONFIG KEY=SPLIT_FLOW_CONTROL_ENABLED;
Configure a cota por tarefa
Ative ou desative o ajuste dinâmico
Com o ajuste dinâmico ativado, a cota de cada tarefa aumenta quando o nó possui capacidade ociosa e diminui quando a cota do nó está sob pressão. A cota por tarefa mantém-se dentro dos limites definidos por MIN_RUNNING_SPLITS_LIMIT_PER_TASK e MAX_RUNNING_SPLITS_LIMIT_PER_TASK.
Se o ajuste dinâmico estiver desativado, a cota por tarefa fica fixa no valor de TARGET_RUNNING_SPLITS_LIMIT_PER_TASK (padrão: 32).
Ative o controle de fluxo de split antes de habilitar o ajuste dinâmico. Execute SHOW ADB_CONFIG KEY=SPLIT_FLOW_CONTROL_ENABLED; para confirme.
Para ativar ou desativar o ajuste dinâmico:
SET ADB_CONFIG NODE_LEVEL_SPLIT_FLOW_CONTROL_ENABLED=true|false;
Parâmetros de cota
Os parâmetros abaixo controlam a cota de varreduras de split concorrentes por tarefa.
|
Parâmetro |
Padrão |
Intervalo válido |
Descrição |
|
|
1 |
De 1 até o valor de |
Defina a cota mínima por tarefa. Sob alta carga no nó, a cota dinâmica não cai abaixo deste valor. |
|
|
32 |
Do valor de |
Representa a cota base por tarefa. Se a soma das cotas-alvo de todas as tarefas couber na cota do nó, a cota de cada tarefa aumenta dinamicamente; caso contrário, diminui. Este valor também define a cota fixa quando o ajuste dinâmico está desativado. |
|
|
64 |
Maior que o valor de |
Estabelece a cota máxima por tarefa. Quando o nó tem capacidade ociosa, a cota dinâmica não ultrapassa este valor. |
Aplique as configurações de cota para um cluster ou consulta
Aplique as configurações de cota no nível do cluster usando SET ADB_CONFIG ou no nível da consulta por meio de uma dica.
Nível do cluster:
SET ADB_CONFIG <parameter>=<value>;
Nível da consulta:
/*+ <parameter>=<value>*/ SELECT * FROM orders;
Exemplos
Defina a cota mínima de varreduras de split concorrentes como 24 para todas as tarefas do cluster:
SET ADB_CONFIG MIN_RUNNING_SPLITS_LIMIT_PER_TASK=24;
Configure a cota mínima como 10 para uma consulta específica:
/*+ MIN_RUNNING_SPLITS_LIMIT_PER_TASK=10*/ SELECT * FROM orders;
Estabeleça a cota máxima como 128 para todas as tarefas do cluster:
SET ADB_CONFIG MAX_RUNNING_SPLITS_LIMIT_PER_TASK=128;
Limite a cota máxima a 100 para uma consulta específica:
/*+ MAX_RUNNING_SPLITS_LIMIT_PER_TASK=100*/ SELECT * FROM adb_test;
Orientações de ajuste
Reduzir a cota de uma tarefa faz com que mais splits aguardem na fila. Isso aumenta a latência de varredura dessa consulta, mas libera recursos para outras. Aumentar a cota produz o efeito oposto.
|
Cenário |
Características da consulta |
Abordagem recomendada |
|
Consultas pontuais ou de baixa latência |
Poucos splits, volume pequeno de dados, conclusão rápida esperada |
Defina |
|
Varreduras completas de tabela grandes e com menor prioridade |
Muitos splits, execução longa, não sensível a latência |
Configure |
|
Consultas em tabelas externas |
A eficiência da varredura depende do throughput da source de dados |
Baseie a cota nos limites de transmissão da source de dados para evitar sobrecarregá-la |
Configure a cota no nível do nó
Cada nó possui uma cota global para varreduras de split concorrentes. O valor padrão é 256 tanto para nós de armazenamento quanto para nós de computação.
Não altere o valor padrão. Uma cota excessivamente alta ou baixa degrada o desempenho do cluster.
Nós de armazenamento (varreduras de tabelas internas):
SET ADB_CONFIG WORKER_MAX_RUNNING_SOURCE_SPLITS_PER_NODE=256;
Nós de computação (varreduras de tabelas externas):
SET ADB_CONFIG EXECUTOR_MAX_RUNNING_SOURCE_SPLITS_PER_NODE=256;
Para consultar a cota atual no nível do nó:
SHOW ADB_CONFIG;
Para obter mais informações, consulte SHOW ADB_CONFIG.
Observações de uso
Alterações na cota do nó aplicam-se apenas a splits pendentes. A redução da cota do nó só entra em vigor após a conclusão das varreduras de split em execução.
Cotas mínimas por tarefa podem fazer com que a cota do nó seja excedida. Se a soma de
MIN_RUNNING_SPLITS_LIMIT_PER_TASKde todas as tarefas em um nó superar a cota desse nó, o número real de varreduras de split concorrentes poderá exceder a cota configurada.