Todos os produtos
Search
Central de documentação

AnalyticDB:Condições de filtro sem pushdown

Última atualização: Jun 27, 2026

Este tópico descreve como e quando usar condições de filtro sem pushdown.

Visão geral

Por padrão, o AnalyticDB for MySQL cria um índice para cada coluna ao criar uma tabela, visando melhorar a eficiência da filtragem de dados. No entanto, o uso de índices nem sempre é ideal e, em alguns casos, pode degradar o desempenho geral. Embora seja possível excluir índices manualmente, essa prática pode causar problemas caso o índice seja necessário posteriormente. O recurso de desativação do pushdown de condições de filtro no AnalyticDB for MySQL oferece uma solução mais adequada. Ele permite impedir temporariamente o pushdown de condições de filtro em colunas específicas no nível da consulta ou do cluster, melhorando o desempenho geral das consultas.

Considere desativar o pushdown de condições de filtro nos seguintes cenários:

  • Dados de baixa cardinalidade: quando uma coluna possui poucos valores únicos, a filtragem ainda retorna um grande volume de dados, tornando o índice ineficaz.

  • Alta pressão de E/S de disco: se suas consultas ou gravações intensas de dados causarem alto uso de E/S, o uso de índices para filtragem pode gerar contenção pelos recursos de E/S do disco e reduzir sua eficácia.

  • Pushdown simultâneo de múltiplas condições: operações complexas como LIKE ou comparações de strings podem consumir recursos significativos nos nós de armazenamento e afetar o desempenho geral.

Verificar se as condições de filtro sofreram pushdown

Verifique se as condições de filtro sofreram pushdown na página de execução.

  1. Na aba Execution Plan, clique em o estágio que contém o operador TableScan.

    Nota

    Para obter informações sobre como acessar a aba Execution Plan, consulte Visualizar resultados de diagnóstico.

  2. Clique em View Stage Plans.

  3. Na página do plano de estágio, clique em o operador TableScan.

  4. No painel Properties à direita, localize a propriedade PushedDownFilter. A presença dessa propriedade indica que a condição de filtro sofreu pushdown. Por exemplo, se o valor da propriedade PushedDownFilter for id = BIGINT '277941', isso indica que a condição de filtro foi enviada para a camada de armazenamento.

    Nota
    • Em clusters no modo elástico, se um operador Filter aparecer no plano de execução de um estágio downstream, as condições de filtro associadas não sofreram pushdown.

    • Em clusters no modo reservado, se um operador Filter aparecer no plano do estágio atual, as condições de filtro associadas não sofreram pushdown.

Desativar o pushdown de condições de filtro para colunas específicas em uma consulta

Em uma consulta específica, use um hint para desativar o pushdown de condições de filtro em colunas determinadas. Essa operação tem efeito apenas nas consultas que usam hints.

Sintaxe

  • Para versões secundárias do mecanismo 3.1.4 ou posteriores, use o seguinte hint:

    /*+ filter_not_pushdown_columns=[Schema1.table1:colName1|colName2;Schema2.table2:colName1|colName2] */
  • Para versões secundárias do mecanismo anteriores à 3.1.4, use o seguinte hint:

    /*+ no_index_columns=[table1.colName1;colName2,table2.colName1] */
Importante
  • Use um hint para desativar o pushdown de condições de filtro em colunas específicas de tabelas no mesmo banco de dados ou em bancos diferentes. Em versões secundárias do mecanismo anteriores à 3.1.4, ao aplicar um hint para tabelas em bancos de dados distintos, garanta que os nomes das tabelas sejam únicos. Caso contrário, o hint poderá afetar tabelas não intencionais. Nas versões secundárias 3.1.4 e posteriores, os hints usam o formato Schema.table para diferenciar as tabelas, evitando efeitos indesejados ao usar hints em tabelas com o mesmo nome em bancos de dados diferentes.

  • Para visualizar a versão secundária do mecanismo do seu cluster, consulte Visualizar informações da versão do cluster. Para atualizar a versão secundária do mecanismo, entre em contato com o suporte técnico.

Exemplos

  • Exemplo 1:

    Este exemplo aplica-se à versão secundária do mecanismo 3.1.4 ou posterior. Na consulta atual, as condições de filtro nas colunas id e product da tabela table01 no banco de dados test01 não sofrem pushdown.

    /*+ filter_not_pushdown_columns=[test01.table01:id|product] */
  • Exemplo 2:

    Este exemplo aplica-se à versão secundária do mecanismo 3.1.4 ou posterior. Na consulta atual, as condições de filtro nas colunas id e product da tabela table01 no banco de dados test01, bem como na coluna key da tabela table03 no banco de dados test02, não sofrem pushdown.

    /*+ filter_not_pushdown_columns=[test01.table01:id|product;test02.table03:key] */
  • Exemplo 3:

    Este exemplo aplica-se a uma versão secundária do mecanismo anterior à 3.1.4. Na consulta atual, as condições de filtro nas colunas id e product da tabela table02, além da coluna key da tabela table03, não sofrem pushdown.

    /*+ no_index_columns=[table02.id;product,table03.key] */

Desativar o pushdown de condições de filtro para colunas específicas em um cluster

Execute as instruções a seguir para desativar o pushdown de condições de filtro em colunas específicas para todas as consultas do cluster atual.

Sintaxe

  • Para versões secundárias do mecanismo 3.1.4 ou posteriores, use a seguinte instrução:

    set adb_config filter_not_pushdown_columns=[Schema1.tableName1:colName1|colName2;Schema2.tableName2:colName1|colName2]
  • Para versões secundárias do mecanismo anteriores à 3.1.4, use a seguinte instrução:

    set adb_config no_index_columns=[tableName1.colName1;colName2,tableName2.colName1]
Importante
  • Use um hint para desativar o pushdown de condições de filtro em colunas específicas de tabelas no mesmo banco de dados ou em bancos diferentes. Em versões secundárias do mecanismo anteriores à 3.1.4, ao aplicar um hint para tabelas em bancos de dados distintos, garanta que os nomes das tabelas sejam únicos. Caso contrário, o hint poderá afetar tabelas não intencionais. Nas versões secundárias 3.1.4 e posteriores, os hints usam o formato Schema.table para diferenciar as tabelas, evitando efeitos indesejados ao usar hints em tabelas com o mesmo nome em bancos de dados diferentes.

  • Para visualizar a versão secundária do mecanismo do seu cluster, consulte Visualizar informações da versão do cluster. Para atualizar a versão secundária do mecanismo, entre em contato com o suporte técnico.

Exemplos

Este exemplo aplica-se à versão secundária do mecanismo 3.1.4 ou posterior. Para todas as consultas no cluster atual, as condições de filtro na coluna id da tabela table02 no banco de dados test02 não sofrem pushdown.

set adb_config filter_not_pushdown_columns=[test02.table02:id]