Desempenho inteligente

Concluído

O SQL Server e o SQL Azure incluem automação para ajudar a fornecer desempenho consistente para seu aplicativo. Esses recursos de automação são chamados, coletivamente, de desempenho inteligente.

O desempenho inteligente para o SQL Azure inclui o processamento inteligente de consultas, a correção automática de planos e o ajuste automático.

Processamento de consulta inteligente

O IQP (processamento inteligente de consultas) é um pacote de novas funcionalidades integradas ao processador de consultas. Você o habilita usando o nível de compatibilidade do banco de dados mais recente. Os aplicativos podem ter o desempenho aprimorado simplesmente usando o nível de compatibilidade do banco de dados mais recente. Não são necessárias alterações de código. Um exemplo de IQP é a compilação adiada de variável de tabela para ajudar a fazer com que as consultas que usam variáveis de tabela sejam executadas mais rapidamente.

O Banco de Dados SQL do Azure e a Instância Gerenciada de SQL do Azure dão suporte ao mesmo nível de compatibilidade do banco de dados necessário (150) para usar o IQP que o SQL Server 2019 e versões posteriores.

Correção automática de plano

As regressões do plano de consulta são um dos problemas de desempenho mais difíceis de resolver no SQL Server. Uma regressão do plano de consulta ocorre quando a mesma consulta é recompilada e um novo plano resulta em um desempenho pior.

O SQL Server 2017 e o Banco de Dados SQL do Azure introduziram o conceito de correção automática de plano analisando os dados no Repositório de Consultas. Quando você habilita o Repositório de Consultas com um banco de dados no SQL Server 2017 (ou posterior) e no Banco de Dados SQL do Azure, o mecanismo do SQL Server procura regressões do plano de consulta e fornece recomendações. Você pode ver essas recomendações na DMV (exibição de gerenciamento dinâmico) sys.dm_db_tuning_recommendations. Essas recomendações incluem instruções T-SQL para forçar manualmente um plano de consulta quando o desempenho está em um bom estado.

Se tiver confiança nessas recomendações, você poderá habilitar o SQL Server a forçar os planos automaticamente quando regressões forem encontradas. Habilite a correção automática do plano usando ALTER DATABASE e o argumento AUTOMATIC_TUNING.

Para o Banco de Dados SQL do Azure, você também pode habilitar a correção automática de plano por meio das opções de ajuste automático nas APIs REST ou no portal do Azure. As recomendações da correção automática de plano sempre estão habilitadas para qualquer banco de dados em que o Repositório de Consultas está habilitado (que é o padrão para o Banco de Dados SQL do Azure e a Instância Gerenciada de SQL do Azure). Para novos bancos de dados, a correção automática de plano (FORCE_PLAN) fica habilitada por padrão para o Banco de Dados SQL do Azure.

Ajuste automático para o Banco de Dados SQL do Azure

A correção automática de plano é um exemplo de ajuste automático no SQL do Azure e no SQL Server, mas um aspecto exclusivo do ajuste automático do Banco de Dados SQL do Azure é a indexação automática.

Observação

Atualmente, a indexação automática não está disponível na Instância Gerenciada de SQL.

A nuvem fornece um método para que a Microsoft forneça serviços adicionais na forma de recomendações de desempenho e de automação fora das recomendações de plano. Essa capacidade é conhecida como ajuste automático para o Banco de Dados SQL do Azure. Esses serviços são executados como programas em segundo plano que analisam os dados de desempenho de uma instância do Banco de Dados SQL do Azure. Esses serviços estão incluídos no preço de qualquer assinatura de banco de dados.

O principal cenário do ajuste automático está relacionado aos índices. O ajuste automático analisa dados de telemetria de um banco de dados, incluindo o Repositório de Consultas e as DMVs, para recomendar a criação de índices que possam aprimorar o desempenho do aplicativo. Além disso, você pode habilitar o ajuste automático a criar automaticamente índices que podem aprimorar o desempenho de consulta. O ajuste automático também monitora alterações de índice e recomenda a remoção ou remove automaticamente índices que não aprimoram o desempenho de consulta.

O ajuste automático para o Banco de Dados SQL do Azure adota uma abordagem conservadora à recomendação de índices. Isso significa que as recomendações que podem aparecer em uma DMV, como sys.dm_db_missing_index_details, ou um plano de consulta, podem não aparecer imediatamente como recomendações do ajuste automático. Os serviços do ajuste automático monitoram consultas ao longo do tempo e usam algoritmos de machine learning para fazer recomendações que realmente afetem o desempenho da consulta.

Observe que o ajuste automático para recomendações de índice não leva em conta o desempenho de sobrecarga que um índice pode causar em suas operações, como inserções, atualizações ou exclusões. Normalmente, os novos índices não clusterizados criados pelo recurso de índices automáticos têm um grande impacto positivo no desempenho.

As consultas parametrizadas são um cenário adicional para o ajuste automático. Consultas com valores não parametrizados podem levar a sobrecarga de desempenho porque o plano de execução é recompilado cada vez que os valores não parametrizados são diferentes. Em muitos casos, as mesmas consultas com valores de parâmetros diferentes geram os mesmos planos de execução. No entanto, esses planos ainda são adicionados separadamente ao cache de planos. O processo de recompilação dos planos de execução usa recursos do banco de dados, aumenta o tempo de duração da consulta e estoura o cache de planos. Esses eventos, por sua vez, fazem com que os planos sejam removidos do cache.

Você pode usar a otimização do PSP (Plano Sensível a Parâmetros) para resolver esse cenário. A otimização do PSP habilita automaticamente vários planos ativos em cache para uma única instrução parametrizada. Os planos de execução armazenados em cache acomodam tamanhos de dados diferentes com base nos valores de parâmetro de runtime fornecidos pelo cliente.

Exemplo de índices com ajuste automático no Banco de Dados SQL do Azure

Veja a seguir um exemplo do portal do Azure, em que índices são recomendados para um banco de dados com base na análise da carga de trabalho ao longo do tempo. Ainda não enviamos atividade suficiente para seu Banco de Dados SQL do Azure em área restrita para gerar recomendações como essa. As recomendações CREATE INDEX são geradas ao longo do tempo à medida que sua carga de trabalho é capturada, e não no pequeno período de tempo deste exercício.

Screenshot of index recommendation notification.

No portal do Azure, em Visão Geral de Desempenho, você pode ver as informações de desempenho das cinco consultas que consomem mais recursos, conforme indicado no Repositório de Consultas. Também há uma recomendação.

Screenshot of Query Performance Overview.

O portal do Azure também oferece a Análise de Desempenho de Consultas, que é uma ferramenta de relatório visual baseada no Repositório de Consultas. Neste exemplo, a Análise de Desempenho de Consultas mostra a consulta específica que consome a maioria dos recursos e fornece orientações sobre como aprimorar o desempenho da consulta.

Screenshot of Query Performance Insights.

O portal do Azure também oferece uma forma direta de ver as recomendações de desempenho.

Screenshot of Performance Recommendations.

Nesta exibição, você vê recomendações específicas e o histórico de qualquer ação de ajuste automático. No caso de um índice, os detalhes do índice e da tabela são mostrados. A opção Automatizar habilita o ajuste automático.

Screenshot of automatic tuning options.

Você pode definir as opções de ajuste automático no nível do banco de dados ou do servidor de banco de dados. Se você habilitasse o ajuste automático nesse cenário, o índice seria criado automaticamente.

Também é possível exibir as opções de ajuste automático por meio do DMV sys.database_automatic_tuning_options.

Observação

Recomendações e automação para índices e planos sensíveis a parâmetros não estão disponíveis para a Instância Gerenciada de SQL do Azure nem para o SQL Server. A correção automática de plano está disponível.

Se selecionar o índice recomendado, você verá mais detalhes sobre o índice específico.

Screenshot of create index recommendation.

Você verá detalhes sobre o índice, a tabela e o espaço necessário. Você tem a opção de aplicar o índice recomendado ou de exibir um script T-SQL que o aplica.

Screenshot of the index recommendation script.

Observe que o índice é um índice não clusterizado aplicado como um índice online. Quando um índice tiver sido aplicado com base em uma recomendação, seja manualmente, seja por meio do ajuste automático, o mecanismo de recomendação também vai monitorar o desempenho da consulta por um período com o índice aplicado. Se o desempenho da consulta for prejudicado em comparação a antes da aplicação do índice, você poderá removê-lo.

Verificação de conhecimentos

1.

Qual opção melhor descreve o IQP (Processamento Inteligente de Consultas)?

2.

A Correção Automática de Plano pode fornecer recomendações e ajudar a corrigir qual tipo de cenário de desempenho?

3.

O Ajuste Automático para o Banco de Dados SQL do Azure pode fazer recomendações e criar índices com base em quais informações?