Todos os produtos
Search
Central de documentação

ApsaraDB for SelectDB:Nereids

Última atualização: Jun 29, 2026

O Nereids é o otimizador de consultas do ApsaraDB for SelectDB. Ele substitui o otimizador legado em consultas analíticas complexas — como junções de múltiplas tabelas e subconsultas profundamente aninhadas — e oferece desempenho comparável ao de um plano legado ajustado manualmente, sem exigir reescrita manual de SQL.

Como funciona

O Nereids apresenta pontos de otimização RBO e CBO na forma de regras. Cada regra fornece um conjunto de padrões que descrevem a estrutura do plano de consulta. Isso permite ao Nereids identificar e reescrever estruturas complexas, incluindo subconsultas aninhadas em várias camadas.

O CBO baseia-se no framework Cascades e utiliza diversas estatísticas de dados combinadas a um modelo de custo multidimensional, o que o torna ideal para consultas com junção de múltiplas tabelas.

Todas as regras de otimização operam na árvore de plano de execução lógica. A representação da consulta como árvore (em vez da estrutura plana do otimizador legado) processa as subconsultas em uma única passagem unificada. Essa abordagem elimina erros lógicos comuns quando várias regras processavam subconsultas independentemente.

Em um benchmark TPC-H SF100 com três nós BE (cada um com 16 núcleos de CPU e 64 GB de memória), o Nereids apresentou desempenho muito superior ao do otimizador legado no SQL original, desde que as estatísticas fossem coletadas antes da execução. No SQL otimizado manualmente, alcançou resultados semelhantes aos do otimizador legado.

Pré-requisitos

Colete estatísticas das tabelas antes de executar consultas com o Nereids. Execute a instrução ANALYZE em cada tabela para reunir as estatísticas necessárias ao CBO. Para estratégias de coleta e mais informações, consulte Estatísticas.

O Nereids vem ativado por padrão. Nenhuma configuração adicional é necessária.

Ativar ou desativar o Nereids

Use variáveis de sessão para controlar o comportamento do Nereids:

Variável

Descrição

enable_nereids_planner

Ativa o Nereids para a sessão atual. Ativado por padrão.

enable_fallback_to_original_planner

Reverte para o otimizador legado quando ocorre um problema no Nereids.

Para desativar o Nereids e forçar o uso do otimizador legado em uma sessão:

SET enable_nereids_planner = false;

Para reativar o Nereids:

SET enable_nereids_planner = true;

Para ativar a reversão automática para o otimizador legado:

SET enable_fallback_to_original_planner = true;
Importante

Com a opção enable_fallback_to_original_planner ativada, o Nereids encaminha automaticamente as consultas com problemas para o otimizador legado. Desative a reversão apenas se desejar controle explícito sobre qual otimizador executa cada consulta.

Limitações

Se enable_fallback_to_original_planner estiver ativado, as consultas afetadas por estas limitações serão roteadas automaticamente para o otimizador legado.

Tipos de dados semiestruturados

O Nereids não processa consultas que envolvam colunas ou valores de retorno de funções dos tipos JSON, ARRAY, MAP ou STRUCT.

Solução alternativa: Mantenha enable_fallback_to_original_planner = true. O otimizador legado trata essas consultas automaticamente.

Instruções DML

O Nereids suporta apenas INSERT INTO SELECT, UPDATE e DELETE. Outros padrões DML não têm suporte.

Solução alternativa: Use o otimizador legado definindo enable_fallback_to_original_planner = true.

Visualizações materializadas com condições de filtro

O Nereids não reescreve consultas para usar visualizações materializadas com condições de filtro definidas.

Solução alternativa: Use visualizações materializadas sem condições de filtro ou consulte diretamente as tabelas base.

Alias de funções

O Nereids não reconhece alias de funções.

Solução alternativa: Substitua os alias pelas expressões completas das funções na consulta.

Funções definidas pelo usuário

Não há suporte para funções definidas pelo usuário (UDFs) implementadas em Java ou carregadas do Hadoop Distributed File System (HDFS).

Solução alternativa: Mantenha enable_fallback_to_original_planner = true. Essas consultas revertem automaticamente para o otimizador legado.

Consultas pontuais de alta concorrência

O Nereids é otimizado para cargas de trabalho analíticas. Consultas pontuais de alta concorrência devem usar o otimizador legado.

Solução alternativa: Defina enable_nereids_planner = false nas sessões que executam consultas pontuais de alta concorrência.

Problemas conhecidos

  • O Nereids não usa cache de partição para acelerar consultas.

Próximos passos

  • Estatísticas — Colete e gerencie estatísticas de tabelas para o CBO.