Melhorar o desempenho de consultas usando junção adaptável - Amazon Aurora

Melhorar o desempenho de consultas usando junção adaptável

Visão geral

A junção adaptável é um recurso de versão prévia no Aurora PostgreSQL 17.4 que ajuda a melhorar o desempenho das consultas. Esse recurso está desabilitado por padrão, mas você pode habilitá-lo usando os parâmetros de configuração global do usuário (GUC). Como esse é um recurso de versão prévia, os valores padrão dos parâmetros podem mudar. Quando habilitada, a junção adaptável ajuda a otimizar o desempenho da consulta ao alternar dinamicamente de uma junção de loop aninhado para uma junção de hash em tempo de execução. Essa troca ocorre quando o otimizador do PostgreSQL escolhe incorretamente uma junção de loop aninhado devido a estimativas de cardinalidade imprecisas.

Configurar junção adaptável

Você pode controlar a junção adaptável usando estes três parâmetros de GUC:

Parâmetros de configuração de junção adaptável
Parâmetro de GUC Descrição Opções padrão e de configuração
apg_adaptive_join_crossover_multiplier Esse multiplicador funciona com o ponto de cruzamento de linhas para determinar quando mudar de um loop aninhado para uma junção de hash. O ponto de cruzamento de linhas é onde o otimizador SQL estima que as operações de loop aninhado e junção de hash tenham o mesmo custo. Um valor multiplicador mais alto reduz a probabilidade de a junção adaptável mudar para uma junção de hash.

Controla se a junção adaptável está habilitada

  • Valor padrão: -1 (desabilitado)

  • Intervalo válido: -1 a DBL_MAX

  • Para habilitar: defina como >= 1

apg_adaptive_join_cost_threshold Esse parâmetro define um limite mínimo de custo de consulta. A junção adaptável se desabilita automaticamente para consultas abaixo desse limite. Isso evita a sobrecarga de desempenho em consultas simples, nas quais o custo de planejar uma junção adaptável pode superar os benefícios de mudar de loop aninhado para junção de hash.

Define o limite mínimo de custo para a consulta

  • Valor padrão: 100

  • Intervalo válido: 0 a DBL_MAX

apg_enable_parameterized_adaptive_join Quando habilitado, esse parâmetro estende a funcionalidade de junção adaptável às junções de loop aninhado parametrizadas. Por padrão, a junção adaptável funciona somente com junções de loop aninhado não parametrizadas, pois é mais provável que elas se beneficiem da mudança para a junção de hash. As junções de loop aninhado parametrizadas geralmente têm melhor desempenho, tornando a mudança para a junção de hash menos essencial.

Controla o comportamento de junção adaptável para junções de loop aninhado

  • Valor padrão: falso

  • Valores válidos: verdadeiro/falso

    • Quando falso: funciona somente com junções de loop aninhado não parametrizadas.

    • Quando verdadeiro: funciona com junções de loop aninhado parametrizadas e não parametrizadas.

nota

Requer que apg_adaptive_join_crossover_multiplier seja habilitado primeiro.