Adaptive Joins no SQL Server

Adaptive Joins no SQL Server

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 se aplica apenas 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 de lote (usando um índice columnstore na consulta) ou usando o modo de lote do SQL Server 2019 no recurso 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 entradas de linhas pequenas, é o operador de junção mais rápido que requer o mínimo de E / S com o mínimo de linhas a serem comparadas.

Leia Também  A expectativa de vida da página não significa Jack, e você deve parar de olhar para ela.

Para esse 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 2

Em tempo de execução, se a contagem de linhas for menor do 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 3

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

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 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

ALTER DATABASE SCOPED CONFIGURATION SET DISABLE_BATCH_MODE_ADAPTIVE_JOINS = ON;

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

ALTER DATABASE SCOPED CONFIGURATION SET BATCH_MODE_ADAPTIVE_JOINS = OFF;

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 que o SQL Server agora esteja tomando decisões inteligentes e automáticas e consertando-as imediatamente, sem minha intervenção.

Leia Também  Seja um aliado e um incômodo - SQLBlog.org

Adaptive Joins no SQL Server 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 Hampton Roads e mentora regional do 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