Todos os produtos
Search
Central de documentação

ApsaraDB for SelectDB:Mecanismo de execução Pipeline

Última atualização: Jun 29, 2026

O mecanismo de execução Pipeline é um novo recurso central do ApsaraDB for SelectDB, desenvolvido para substituir o mecanismo de execução legado. Em ambientes com cargas de trabalho mistas, o mecanismo legado baseado no modelo vulcão não aproveita totalmente as CPUs multicore, sofre com esgotamento do pool de threads e permite que consultas grandes inaniem as menores. O mecanismo de execução Pipeline substitui esse motor antigo por uma arquitetura orientada a dados e baseada em push, eliminando o excesso de threads e reduzindo a contenção de recursos entre consultas simultâneas.

Para obter detalhes sobre o design, consulte Support Pipeline Exec Engine.

Como funciona

O mecanismo de execução SQL legado baseia-se no modelo vulcão, que apresenta três problemas fundamentais em ambientes multicore:

  • Necessidade de ajuste manual de paralelismo. O mecanismo não aproveita automaticamente a capacidade da CPU multicore. Para melhorar o desempenho das consultas, defina manualmente o grau de paralelismo, tarefa complexa de ajustar corretamente em produção.

  • Esgotamento do pool de threads e deadlocks. Cada instância de consulta ocupa uma thread no pool. Ao atingir a capacidade máxima, o mecanismo de consulta entra em pseudo-deadlock e deixa de responder a novas solicitações. Deadlocks lógicos também podem ocorrer, por exemplo, quando todas as threads executam uma tarefa de probe em uma única instância. Mesmo sob carga normal, operadores bloqueantes retêm threads impossíveis de reatribuir a instâncias prontas para execução, mantendo baixa a utilização geral da CPU.

  • Alta sobrecarga de troca de threads. Operadores bloqueantes dependem do agendador de threads do sistema operacional. Em cenários de carga mista, isso gera sobrecarga significativa de troca de contexto e degrada o throughput.

O mecanismo de execução Pipeline resolve esses problemas por meio de três mudanças arquiteturais:

pipeline-execution-engine-2067b3a862de84a561eabefd41d48a56.png

  1. Transição de execução pull para push. As consultas rodam no modo push em vez do modelo pull tradicional. Os dados fluem downstream pelos pipelines sem que threads fiquem ociosas aguardando resultados.

  2. Conversão de operações bloqueantes em assíncronas. Operadores que antes bloqueavam threads foram redesenhados como operações assíncronas. Essa mudança elimina a sobrecarga de troca de threads e mantém elevada a utilização da CPU.

  3. Limitação de threads com agendamento por fatia de tempo. O mecanismo restringe o número de threads de execução e usa alternância por fatias de tempo para arbitrar pipelines concorrentes. Consultas grandes deixam de monopolizar threads e inaniar consultas menores.

Configure o mecanismo de execução Pipeline

Defina variáveis de sessão para controlar a operação do mecanismo de execução Pipeline em uma determinada sessão de consulta.

Variáveis de sessão

Variável

Padrão

Descrição

enable_pipeline_engine

true

Ative o mecanismo de execução Pipeline nos nós backend (BE). Se definido como true, o nó BE utiliza o mecanismo de execução Pipeline para processar consultas.

parallel_pipeline_task_num

0

Quantidade de tarefas de pipeline executadas simultaneamente por consulta SQL. Se definido como 0, o ApsaraDB for SelectDB ajusta esse valor automaticamente para metade do número de núcleos de CPU no nó BE.

max_instance_num

64

Concorrência máxima definida automaticamente pelo ApsaraDB for SelectDB. Por padrão, esta variável de sessão vem configurada como 64.

Ative a execução Pipeline

O mecanismo de execução Pipeline vem ativado por padrão. Para ativá-lo explicitamente:

SET enable_pipeline_engine = true;

Defina a concorrência do Pipeline

Por padrão, o ApsaraDB for SelectDB define automaticamente a concorrência de tarefas do Pipeline como metade do número de núcleos de CPU (parallel_pipeline_task_num = 0). Para alterar esse comportamento:

SET parallel_pipeline_task_num = <n>;
Quando parallel_pipeline_task_num é 0 , a concorrência calculada automaticamente fica limitada por max_instance_num (padrão: 64 ). Ajuste max_instance_num para alterar o teto da concorrência automática.