Adaptive Joins no SQL Server – Uma cena do SQLEspresso

Adaptive Joins no SQL Server – Uma cena do SQLEspresso

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


O SQL Server 2017 (compatibilidade 140) nos trouxe muitos Intelligent Query Processing (IQP), formalmente conhecido como Adaptive Query Processing, recursos que melhoram o desempenho em cargas de trabalho imediatamente, sem alterações de código para implementar. Um desses recursos introduzidos foi Adaptive Joins. Neste recurso, o operador de junção é determinado dinamicamente no tempo de execução pelo otimizador, que define um número limite de linhas e, em seguida, escolhe entre um Loop aninhado ou operador de junção Hash Match. Esta chave de operador pode produzir uma junção melhor e melhorar o desempenho de suas consultas sem que você precise levantar um dedo.

Nem todas as consultas serão qualificadas para este novo recurso. O recurso só se aplica a instruções SELECT que normalmente retornariam um Loop Aninhado ou Hash Match, nenhuma outra junção é aplicada. Além disso, a consulta deve ser executada no modo em lote (usando um índice Columnstore na consulta) ou usando o recurso Modo em lote do SQL Server 2019 no Rowstore. Para saber mais sobre o último, recentemente escrevi sobre o modo em lote no Rowstore aqui.

Agora, vamos entender a diferença entre os dois operadores de junção diferentes que o otimizador escolherá no recurso.

Hash Match– Cria uma tabela hash (na memória) para as colunas necessárias para cada linha e, em seguida, cria um hash para a segunda tabela e encontra correspondências em cada linha. É muito caro e requer muitos recursos de memória.

Loop aninhado– Executa uma pesquisa na tabela interna (menor) para cada linha da tabela externa (maior). Menos caro do que um Hash Match e ideal para pequenas entradas de linha, é o operador de junção mais rápido que requer menos E / S com o menor número de linhas tendo que ser comparadas.

Leia Também  Trabalhando com pacotes SSIS no AWS RDS SQL Server

Para este recurso, um novo operador foi introduzido para nos mostrar que um Adaptive Join foi usado, e as propriedades nos fornecem detalhes sobre como ele determinou qual join usar.

Adaptive Joins no SQL Server - Uma cena do SQLEspresso 2

No tempo de execução, se a contagem de linhas for menor que o Limiar Adaptativo de linhas, um Loop aninhado será escolhido. Se for maior do que o limite, ele escolherá um Hash Match, é simples assim. Isso pode ser ótimo para cargas de trabalho que oscilam entre entradas de linhas pequenas e grandes para a mesma consulta. Observe a captura de tela abaixo. Usando estimativas, o plano teria retornado um Hash Match, mas durante as execuções reais ele mudou dinamicamente para um loop aninhado.

Adaptive Joins no SQL Server - Uma cena do SQLEspresso 3

As linhas de limite adaptável são determinadas com base no custo do operador. O otimizador avaliará o custo de cada operador usando um algoritmo para a operação de junção. Onde esse custo se cruza (o ponto de inflexão da contagem de linhas) é o que ele usa para determinar o limite. O Microsoft Docs nos dá uma boa imagem disso.

Adaptive Joins no SQL Server - Uma cena do SQLEspresso 4

Como com qualquer recurso do SQL Server, você tem a capacidade de desligá-lo, desabilitando-o se achar que ele não está fornecendo nenhum ganho de desempenho ou está causando regressões de consulta em seus ambientes.

– SQL Server 2017

– Banco de dados SQL do Azure, SQL Server 2019 e superior

O Intelligent Query Processing nos oferece muitas novas correções “automáticas” para nossas consultas. Adaptive Joins despertou meu interesse como administrador de banco de dados que adora ajuste de desempenho. As escolhas inadequadas de JOIN feitas pelo otimizador podem realmente prejudicar o desempenho, o que provavelmente exigiria a implementação de dicas de consulta ou guias de plano. Eu realmente gosto do fato de que o SQL Server agora está tomando decisões inteligentes e automáticas e corrigindo-as imediatamente, sem minha intervenção.

Leia Também  Removendo o rastreio padrão - Parte 1

Adaptive Joins no SQL Server - Uma cena do SQLEspresso 5

Sobre Monica Rathbun

Consultor da Denny Cherry & Associates Consulting que mora na Virgínia. Ela é Microsoft Certified Solutions Expert, Microsoft MVP para Data Platform e VMWare vExpert. Ela tem mais de 15 anos de experiência trabalhando com uma ampla variedade de plataformas de banco de dados com foco em SQL Server. Ela é palestrante frequente em conferências do setor de TI sobre tópicos como ajuste de desempenho e gerenciamento de configuração. Ela é líder do grupo de usuários do SQL Server em Hampton Roads e mentora regional da Mid-Atlantic PASS. Ela é apaixonada pelo SQL Server e pela comunidade do SQL Server, fazendo tudo o que pode para retribuir. Monica sempre pode ser encontrada no Twitter (@sqlespresso) dando dicas úteis.

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br