Desempenho inteligente

Concluído

O SQL Server e o SQL do Azure incluem automatização, de modo a oferecer um desempenho consistente à aplicação. Esses recursos de automação são chamados coletivamente de desempenho inteligente.

O desempenho inteligente do SQL do Azure inclui o processamento inteligente de consultas, a correção automática do plano e a otimização automática.

Processamento de consultas inteligentes

O Processamento Inteligente de Consultas (IQP) é um conjunto de novas funcionalidades incorporadas no processador de consultas. É ativado através do nível de compatibilidade da base de dados mais recente. Os aplicativos podem ganhar desempenho usando o nível de compatibilidade de banco de dados mais recente. Não são necessárias alterações do código. Um exemplo de IQP é a compilação com variáveis de tabelas, que ajuda na criação de consultas através de variáveis de execução mais rápida.

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

Correção automática do plano

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

O SQL Server 2017 e a Base de Dados SQL do Azure introduziram o conceito de correção automática do plano ao analisarem dados no Arquivo de Consulta. Ao ativar o Arquivo de Consulta com uma base de dados no SQL Server 2017 (ou posterior) e na Base de Dados SQL do Azure, o motor do SQL Server procura regressões do plano de consulta e fornece recomendações. Você pode ver essas recomendações na sys.dm_db_tuning_recommendations visualização de gerenciamento dinâmico (Detran). Estas recomendações incluem instruções T-SQL para forçar manualmente um plano de consulta quando o desempenho está em bom estado.

Se ganhar confiança nestas recomendações, pode ativar o SQL Server para forçar planos automaticamente ao encontrar regressões. Habilite a correção automática do plano usando ALTER DATABASE e o AUTOMATIC_TUNING argumento.

No caso da Base de Dados SQL do Azure, também pode ativar a correção automática do plano através de opções de otimização automática no portal do Azure ou ao utilizar APIs REST. As recomendações da correção automática do plano são sempre ativadas para qualquer base de dados na qual o Arquivo de Consulta esteja ativado (trata-se da predefinição da Base de Dados SQL do Azure e do Azure SQL Managed Instance). Para novos bancos de dados, a correção automática de plano (FORCE_PLAN) é habilitada por padrão para o Banco de Dados SQL do Azure.

Otimização automática da Base 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 aspeto exclusivo do ajuste automático do Banco de Dados SQL do Azure é a indexação automática.

Nota

Neste momento, a indexação automática não está disponível no SQL Managed Instance.

A cloud tem um método para a Microsoft fornecer serviços adicionais sob a forma de recomendações e automatização de desempenho fora das recomendações do plano. Esta funcionalidade é conhecida como otimização automática da Base de Dados SQL do Azure. Estes serviços são executados como programas em segundo plano que analisam os dados de desempenho de uma instância da Base de Dados SQL do Azure. Estes serviços estão incluídos no preço de qualquer subscrição de base de dados.

O principal cenário para o qual a otimização automática foi concebida está relacionado com os índices. O ajuste automático analisa dados da telemetria de um banco de dados, incluindo o Repositório de Consultas e DMVs, para recomendar índices a serem criados que possam melhorar o desempenho do aplicativo. Além disso, pode ativar a otimização automática para criar automaticamente índices que melhorem o desempenho de consulta. A otimização automática também monitoriza alterações ao índice e recomenda a remoção ou remove automaticamente os índices que não melhoram o desempenho de consulta.

A otimização automática da Base de Dados SQL do Azure recomenda índices de forma conservadora. Isso significa que as recomendações que podem aparecer em um Detran, como o , ou um plano de show de consulta, podem não aparecer imediatamente como sys.dm_db_missing_index_detailsrecomendações para ajuste automático. Os serviços de ajuste automático monitoram consultas ao longo do tempo e usam algoritmos de aprendizado de máquina para fazer recomendações para realmente afetar o desempenho da consulta.

Tenha em atenção que a otimização automática de recomendações de índice não tem em conta os custos de desempenho que um índice pode causar nas suas operações ao introduzir, atualizar ou eliminar operações. Normalmente, os novos índices não agrupados que o recurso de índices automáticos cria têm um grande impacto positivo no desempenho.

As consultas parametrizadas representam um cenário adicional para a otimização automática. 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, estes planos são adicionados em separado à cache de planos. O processo de recompilação de planos de execução utiliza recursos da base de dados, aumenta o tempo de duração da consulta e excede a capacidade da cache de planos. Por sua vez, estes eventos fazem com que os planos sejam removidos da cache.

Você pode usar a otimização PSP (Parameter Sensitive Plan) para resolver esse cenário. A otimização PSP permite automaticamente vários planos em cache ativos para uma única instrução parametrizada. Os planos de execução armazenados em cache acomodam diferentes tamanhos de dados com base nos valores de parâmetros de tempo de execução fornecidos pelo cliente.

Exemplo de índices com a otimização automática na Base de Dados SQL do Azure

Segue-se um exemplo do portal do Azure em que são recomendados índices para uma base de dados baseada na análise de cargas de trabalho ao longo do tempo. Ainda não enviámos atividade suficiente para a sua sandbox Base de Dados SQL do Azure para gerar recomendações como esta. CREATE INDEX As recomendações 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 informações de desempenho para as cinco principais consultas que consomem recursos, conforme encontradas no Repositório de Consultas. Existe também uma recomendação.

Screenshot of Query Performance Overview.

O portal do Azure também disponibiliza o Query Performance Insights, uma ferramenta de relatórios de elementos visuais baseada no Arquivo de Consultas. Neste exemplo, o Query Performance Insights mostra a consulta específica que consome mais recursos e recomenda como pode melhorar o desempenho de consulta.

Screenshot of Query Performance Insights.

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

Screenshot of Performance Recommendations.

Nesta vista, vê as recomendações e o histórico de todas as ações de otimização automática. No caso de um índice, a tabela e os respetivos detalhes são apresentados. A opção Automatizar ativa a otimização automática.

Screenshot of automatic tuning options.

Pode definir opções de otimização automática no servidor de bases de dados ou ao nível da base de dados. Se você habilitasse o ajuste automático nesse cenário, o índice seria criado automaticamente.

Também é possível visualizar as opções de ajuste automático através do sys.database_automatic_tuning_options Detran.

Nota

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

Se selecionar o índice recomendado, irá obter mais detalhes sobre esse índice.

Screenshot of create index recommendation.

Você verá detalhes sobre o índice, a tabela e o espaço necessário. Pode optar por aplicar o índice recomendado ou ver um script T-SQL que será utilizado para aplicar o índice.

Screenshot of the index recommendation script.

Repare que o índice corresponde a um índice sem cluster que é aplicado como um índice online. Quando um índice tiver sido aplicado com base numa recomendação, manualmente ou através da otimização automática, o motor de recomendação também monitoriza o desempenho da consulta durante um período com o índice aplicado. Caso o desempenho de consulta diminuir comparativamente à altura em que o índice foi aplicado, pode remover o índice.

Verificação de conhecimento

1.

Que afirmação descreve melhor o IQP (Processamento Inteligente de Consultas)?

2.

A Correção Automática do Plano pode recomendar e corrigir o tipo de cenário de desempenho?

3.

A Otimização Automática da Base de Dados SQL do Azure pode recomendar e criar índices com base em que informações?