O controle de fluxo de splits limita o número de varreduras de splits simultâneas em uma tarefa ou em um nó. Sem esse limite, a alta simultaneidade de varreduras pode causar os seguintes problemas:
Em tabelas internas, as varreduras de splits simultâneas competem pelos recursos de E/S dos nós de armazenamento, o que aumenta a utilização da CPU e o uso de memória, podendo tornar esses nós instáveis.
Em tabelas externas, a eficiência da varredura varia conforme a source de dados. Se o número de varreduras de splits simultâneas 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 splits está ativado por padrão.
Este tópico descreve como ativar ou desativar o controle de fluxo de splits e configure a cota de varreduras de splits simultâneas 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 verify 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 run 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, e uma única tarefa pode processar vários splits simultaneamente.
O controle de fluxo de splits opera em dois níveis:
Nível de tarefa: Cada tarefa possui uma cota para varreduras de splits simultâneas. Quando o número de varreduras em execução atinge essa cota, as novas varreduras aguardam a conclusão de uma varredura em andamento.
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 disponível e diminui quando o nó está sob carga.
Escolha uma abordagem de gerenciamento de cotas
Antes de configure as cotas, decida se permitirá que o sistema ajuste as cotas por tarefa automaticamente ou se as definirá com um valor fixo.
|
Abordagem |
Como funciona |
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 fica fixada no valor de |
Cargas de trabalho previsíveis que exigem controle preciso de simultaneidade |
O ajuste dinâmico exige que o controle de fluxo de splits esteja ativado.
Ative ou desative o controle de fluxo de splits
O controle de fluxo de splits 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 verify se o controle de fluxo de splits está ativado no momento:
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ó tem capacidade disponível e diminui quando a cota do nó está sob pressão. A cota por tarefa permanece 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 splits antes de enable o ajuste dinâmico. Execute SHOW ADB_CONFIG KEY=SPLIT_FLOW_CONTROL_ENABLED; para confirm.
Para enable ou desativar o ajuste dinâmico:
SET ADB_CONFIG NODE_LEVEL_SPLIT_FLOW_CONTROL_ENABLED=true|false;
Parâmetros de cota
Os parâmetros a seguir controlam a cota de varreduras de splits simultâneas por tarefa.
|
Parâmetro |
Padrão |
Intervalo válido |
Descrição |
|
|
1 |
De 1 até o valor de |
Define 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, ela 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ó possui 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 usando 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 splits simultâneas como 24 para todas as tarefas no cluster:
SET ADB_CONFIG MIN_RUNNING_SPLITS_LIMIT_PER_TASK=24;
Defina a cota mínima como 10 para uma consulta específica:
/*+ MIN_RUNNING_SPLITS_LIMIT_PER_TASK=10*/ SELECT * FROM orders;
Defina a cota máxima como 128 para todas as tarefas no cluster:
SET ADB_CONFIG MAX_RUNNING_SPLITS_LIMIT_PER_TASK=128;
Defina a cota máxima como 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 consultas. 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 e conclusão rápida esperada |
Defina valores maiores para |
|
Varreduras completas de tabela grandes e com menor prioridade |
Muitos splits, longa duração e sem sensibilidade à latência |
Use um valor menor para |
|
Consultas em tabelas externas |
Eficiência da varredura dependente 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 splits simultâneas. 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 view 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 splits 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 splits simultâneas poderá exceder a cota configurada.