Esta página oferece uma vista geral conceptual da filtragem adaptativa na IA do AlloyDB, uma funcionalidade concebida para otimizar as pesquisas de vetores filtradas.
O que é a filtragem adaptável?
A filtragem adaptativa analisa os padrões de consultas e as distribuições de dados durante a execução de consultas para escolher dinamicamente a estratégia de filtragem mais eficiente, como a filtragem prévia ou inline.
O otimizador de consultas da IA do AlloyDB usa a análise baseada em custos para determinar se a filtragem inline ou a pré-filtragem oferece o melhor desempenho em qualquer ponto durante a execução da consulta.
Este tipo de otimização suporta as pesquisas vetoriais filtradas da IA do AlloyDB, em que a filtragem adaptativa alterna automaticamente entre a utilização do índice de vetores e de metadados, o que produz resultados eficientes e precisos sem intervenção manual.
Alternância dinâmica entre estratégias de filtragem
A filtragem adaptativa alterna automaticamente e de forma dinâmica entre a filtragem inline e as estratégias de pré-filtragem durante a execução de consultas com base em padrões de consulta e distribuições de dados em tempo real. O otimizador de consultas da IA do AlloyDB usa a análise baseada em custos para determinar que estratégia oferece o melhor desempenho em qualquer ponto específico.
De inline para pré-filtragem
Quando o otimizador determina que a pré-filtragem é mais eficiente, a filtragem adaptativa aciona uma mudança da filtragem inline para a pré-filtragem durante a execução. O plano de consulta muda dinamicamente para refletir esta alteração.
Por exemplo, o plano pode mostrar Bitmap assisted pre-filtering
no campo Estratégia de execução quando o otimizador determina que a pré-filtragem é mais eficiente nesse ponto da consulta. Esta alteração dinâmica ocorre à medida que o sistema se adapta aos dados reais que encontra durante a execução da consulta.
Limit (actual rows=10 loops=1)
-> Custom Scan (vector scan) on t1 (actual rows=10 loops=1)
Execution Strategy: Bitmap assisted pre-filtering
Order By: (vec_col <=> '[...]'::vector)
Limit: 10
-> Bitmap Index Scan on btree_idx (actual rows=10000 loops=1)
Index Cond: (int_col <= 100000000)
Quando usa Execution Strategy: Bitmap assisted pre-filtering
, um Bitmap Index Scan
separado filtra primeiro um grande conjunto de dados. Se esta pré-filtragem reduzir eficazmente os candidatos, o índice de vetores não é usado para a pesquisa de semelhança de vetores final.
Da pré-filtragem à filtragem inline
A filtragem adaptativa também pode mudar dinamicamente da pré-filtragem para a filtragem inline se o otimizador de consultas do AlloyDB AI determinar que a filtragem inline é mais eficiente para as caraterísticas da consulta atual.
Nestes casos, o plano de consulta ajusta-se dinamicamente para refletir um processamento mais direto dos dados vetoriais sem uma etapa de pré-filtragem explícita que anteceda a análise vetorial. Esta adaptabilidade ajuda a alcançar um desempenho ideal à medida que as distribuições de dados ou os parâmetros de consulta mudam durante a execução.
Por exemplo, o plano de consulta mostra vector scan
no campo Estratégia de execução quando o otimizador determina que uma estratégia de filtragem inline é mais eficiente para a consulta especificada.
Limit (actual rows=10 loops=1)
-> Custom Scan (vector scan) on t1 (actual rows=10 loops=1)
Execution Strategy: Bitmap assisted vector Scan on scann_idx
Order By: (vec_col <=> '[...]'::vector)
Limit: 10
Num Requalifications: 0
Num filtered: 1000
-> Bitmap Index Scan on btree_idx (actual rows=10000 loops=1)
Index Cond: (int_col <= 100000000)
Neste exemplo, o elemento Execution Strategy
mostra Bitmap assisted vector Scan on scann_idx
, com um elemento Bitmap Index Scan
subjacente em btree_idx
. Isto indica que a pesquisa vetorial usa um filtro de mapa de bits, que a análise do índice de mapa de bits gera com base na condição int_col <= 100000000
. Em seguida, o Custom Scan (vector scan)
processa apenas as linhas identificadas por este mapa de bits, integrando a filtragem diretamente no processo de análise vetorial.