Recomendações de desempenho do Banco de Dados SQLPerformance recommendations for SQL Database

O Banco de Dados SQL do Azure aprende e se adapta ao seu aplicativo.Azure SQL Database learns and adapts with your application. Ele fornece recomendações personalizadas que permitem que você maximize o desempenho de seus bancos de dados SQL.It provides customized recommendations that enable you to maximize the performance of your SQL databases. O Banco de Dados SQL avalia e analisa continuamente o histórico de uso de bancos de dados SQL.SQL Database continuously assesses and analyzes the usage history of your SQL databases. As recomendações fornecidas são baseadas em padrões de carga de trabalho exclusiva do banco de dados e ajudam a melhorar o desempenho.The recommendations that are provided are based on database-unique workload patterns and help improve performance.

Dica

O ajuste automático é o método recomendado para ajustar automaticamente alguns dos problemas mais comuns de desempenho do banco de dados.Automatic tuning is the recommended method to automatically tune some of the most common database performance issues. Análise de desempenho de consulta é o método recomendado para necessidades de monitoramento de desempenho de Banco de Dados SQL do Azure.Query Performance Insights is the recommended method for basic Azure SQL Database performance monitoring needs. Análise de SQL do Azure é o método recomendado para monitoramento de desempenho do banco de dados avançado em grande escala, com inteligência interna para solução de problemas de desempenho automatizado.Azure SQL Analytics is the recommended method for advanced monitoring of database performance at scale, with built-in intelligence for automated performance troubleshooting.

Opções de recomendações de desempenhoPerformance recommendations options

As opções de recomendação de desempenho disponíveis do banco de dados SQL do Azure são:Performance recommendation options available Azure SQL Database are:

Recomendação de desempenhoPerformance recommendation Suporte a banco de dados individual e banco de dados em poolSingle database and pooled database support Suporte a banco de dados de instânciaInstance database support
Criar recomendações de índice – recomenda a criação de índices que podem melhorar o desempenho da carga de trabalho.Create index recommendations - Recommends creation of indexes that may improve performance of your workload. simYes NãoNo
Recomendações de drop index – recomenda a remoção de índices redundantes e duplicados diariamente, exceto índices exclusivos, e índices que não foram usados por um longo período (> 90 dias).Drop index recommendations - Recommends removal of redundant and duplicate indexes daily, except for unique indexes, and indexes that were not used for a long time (>90 days). Observe que essa opção não é compatível com aplicativos que usam alternância de partição e dicas de índice.Please note that this option is not compatible with applications using partition switching and index hints. Não há suporte para a remoção de índices não utilizados para as camadas de serviço Premium e Comercialmente Crítico.Dropping unused indexes is not supported for Premium and Business Critical service tiers. simYes NãoNo
Parametrizar consultas recomendações (visualização) – recomenda parametrização forçadas em casos em que você tem uma ou mais consultas que estão constantemente sendo recompiladas, mas terminam com o mesmo plano de execução de consulta.Parameterize queries recommendations (preview) - Recommends forced parametrization in cases when you have one or more queries that are constantly being recompiled but end up with the same query execution plan. simYes NãoNo
Corrigir recomendações de problemas de esquema (versão prévia) – as recomendações para correção de esquema aparecem quando o serviço do banco de dados SQL observa uma anomalia no número de erros SQL relacionados ao esquema que estão ocorrendo no banco de dados SQL.Fix schema issues recommendations (preview) - Recommendations for schema correction appear when the SQL Database service notices an anomaly in the number of schema-related SQL errors that are happening on your SQL database. A Microsoft está atualmente substituindo recomendações do tipo "Corrigir problema de esquema".Microsoft is currently deprecating "Fix schema issue" recommendations. simYes NãoNo

Criar recomendações de índiceCreate index recommendations

O Banco de Dados SQL monitora continuamente as consultas que estão sendo executadas e identifica os índices que podem melhorar o desempenho.SQL Database continuously monitors the queries that are running and identifies the indexes that could improve performance. Após haver certeza suficiente de que um determinado índice está ausente, uma nova recomendação Criar índice é criada.After there's enough confidence that a certain index is missing, a new Create index recommendation is created.

O Banco de Dados SQL do Azure aumenta a confiança estimando o ganho de desempenho que o índice trará ao longo do tempo.Azure SQL Database builds confidence by estimating the performance gain the index would bring through time. Dependendo do ganho de desempenho estimado, as recomendações são categorizadas como alta, média ou baixa.Depending on the estimated performance gain, recommendations are categorized as high, medium, or low.

Índices criados usando recomendações sempre são sinalizados como índices criados automaticamente.Indexes that are created by using recommendations are always flagged as auto-created indexes. Você pode ver quais índices são criados automaticamente examinando a exibição sys.indexes.You can see which indexes are auto-created by looking at the sys.indexes view. Índices criados automaticamente não bloqueiam os comandos ALTER/RENAME.Auto-created indexes don’t block ALTER/RENAME commands.

Se você tentar descartar a coluna que tem um índice criado automaticamente por ela, o comando é passado.If you try to drop the column that has an auto-created index over it, the command passes. O índice criado automaticamente é descartado com o comando também.The auto-created index is dropped with the command as well. Índices regulares bloqueiam o comando ALTER/RENAME em colunas que são indexadas.Regular indexes block the ALTER/RENAME command on columns that are indexed.

Depois que a recomendação para criar índice for aplicada, o Banco de Dados SQL do Azure comparará o desempenho das consultas com o desempenho de linha de base.After the create index recommendation is applied, Azure SQL Database compares the performance of the queries with the baseline performance. Se o novo índice melhorou o desempenho, a recomendação é sinalizada como bem-sucedida e o relatório de impacto fica disponível.If the new index improved performance, the recommendation is flagged as successful and the impact report is available. Se o índice não melhorou o desempenho, ele é revertido automaticamente.If the index didn’t improve performance, it's automatically reverted. O Banco de Dados SQL usa este processo para garantir que as recomendações melhorem o desempenho do banco de dados.SQL Database uses this process to ensure that recommendations improve database performance.

Qualquer recomendação criar índice tem uma política de retirada que não permite aplicar a recomendação se o uso de recursos de um banco de dados ou pool estiver alto.Any create index recommendation has a back-off policy that doesn't allow applying the recommendation if the resource usage of a database or pool is high. A política de retirada leva em conta CPU, E/S de Dados, E/S de Log e armazenamento disponível.The back-off policy takes into account CPU, Data IO, Log IO, and available storage.

Se CPU, E/S de Dados ou Log de E/S for maior do que 80% nos 30 minutos anteriores, a recomendação para criar índice será adiada.If CPU, Data IO, or Log IO is higher than 80% in the previous 30 minutes, the create index recommendation is postponed. Se o armazenamento disponível for inferior a 10% após o índice ser criado, a recomendação entrará em estado de erro.If the available storage will be below 10% after the index is created, the recommendation goes into an error state. Se depois de alguns dias o ajuste automático ainda acreditar que o índice pode ser benéfico, o processo será iniciado novamente.If, after a couple of days, automatic tuning still believes that the index would be beneficial, the process starts again.

Esse processo se repetirá até que não haja armazenamento suficiente disponível para criar um índice ou até que o índice não seja visto mais como benéfico.This process repeats until there's enough available storage to create an index, or until the index isn't seen as beneficial anymore.

Recomendações para Remover ÍndiceDrop index recommendations

Além de detectar um índice ausente, o Banco de Dados SQL analisa continuamente o desempenho dos índices existentes.Besides detecting missing indexes, SQL Database continuously analyzes the performance of existing indexes. Se um índice não for usado, o banco de dados SQL do Azure recomendará cancelá-lo.If an index is not used, Azure SQL Database recommends dropping it. Descartar um índice é recomendado em dois casos:Dropping an index is recommended in two cases:

  • O índice é uma duplicata de outro índice (mesma coluna indexada e incluída, esquema de partição e filtros).The index is a duplicate of another index (same indexed and included column, partition schema, and filters).
  • O índice não foi usado por um período prolongado (93 dias).The index hasn't been used for a prolonged period (93 days).

Recomendações para Remover Índice também passam por verificação após a implementação.Drop index recommendations also go through the verification after implementation. Se o desempenho melhorar, o relatório de impacto ficará disponível.If the performance improves, the impact report is available. Se o desempenho diminuir, a recomendação será revertida.If performance degrades, the recommendation is reverted.

Recomendações de parametrização de consultas (versão prévia)Parameterize queries recommendations (preview)

Recomendações para Parametrizar consultas aparecem quando o serviço de Banco de Dados SQL detecta que você tem uma ou mais consultas que estão constantemente sendo recompiladas, mas terminam com o mesmo plano de execução de consulta.Parameterize queries recommendations appear when you have one or more queries that are constantly being recompiled but end up with the same query execution plan. Essa condição cria uma oportunidade para aplicar a parametrização forçada.This condition creates an opportunity to apply forced parameterization. A parametrização forçada, por sua vez, permite que os planos de consulta sejam armazenadas em cache e reutilizados no futuro, o que melhora o desempenho e reduz o uso de recursos.Forced parameterization, in turn, allows query plans to be cached and reused in the future, which improves performance and reduces resource usage.

Cada consulta que é emitida para o SQL Server inicialmente precisa ser compilada para gerar um plano de execução.Every query that's issued against SQL Server initially needs to be compiled to generate an execution plan. Cada plano gerado é adicionado ao cache de planos.Each generated plan is added to the plan cache. As execuções subsequentes da mesma consulta poderão reutilizar esse plano pelo cache, o que elimina a necessidade de compilações adicionais.Subsequent executions of the same query can reuse this plan from the cache, which eliminates the need for additional compilation.

Consultas com valores não parametrizados podem gerar sobrecarga de desempenho porque o plano de execução é recompilado toda vez que os valores não parametrizados são diferentes.Queries with non-parameterized values can lead to performance overhead because the execution plan is recompiled each time the non-parameterized values are different. Em muitos casos, as mesmas consultas com valores de parâmetros diferentes geram os mesmos planos de execução.In many cases, the same queries with different parameter values generate the same execution plans. No entanto, esses planos ainda são adicionados separadamente ao cache de planos.These plans, however, are still separately added to the plan cache.

O processo de recompilação de planos de execução usa recursos do banco de dados, aumenta o tempo de duração da consulta e sobrecarrega o cache de planos.The process of recompiling execution plans uses database resources, increases the query duration time, and overflows the plan cache. Esses eventos, por sua vez, fazem com que os planos sejam removido do cache.These events, in turn, cause plans to be evicted from the cache. Esse comportamento do SQL Server pode ser alterado ao definir a opção de parametrização forçada no banco de dados.This SQL Server behavior can be altered by setting the forced parameterization option on the database.

Para ajudá-lo a estimar o impacto dessa recomendação, você receberá uma comparação entre o uso real da CPU e o uso projetado da CPU (como se a recomendação tivesse sido aplicada).To help you estimate the impact of this recommendation, you are provided with a comparison between the actual CPU usage and the projected CPU usage (as if the recommendation were applied). Essa recomendação pode ajudá-lo a obter uma economia de CPU.This recommendation can help you gain CPU savings. Ela também pode ajudar a reduzir a duração da consulta e a sobrecarga para o cache de planos, o que significa que mais dos planos podem permanecer no cache e ser reutilizados.It can also help you decrease query duration and overhead for the plan cache, which means that more of the plans can stay in the cache and be reused. Você pode aplicar essa recomendação com rapidez selecionando o comando Aplicar.You can apply this recommendation quickly by selecting the Apply command.

Depois de aplicar essa recomendação, ele permite a parametrização forçada em minutos no banco de dados.After you apply this recommendation, it enables forced parameterization within minutes on your database. Ele inicia o processo de monitoramento, que dura aproximadamente 24 horas.It starts the monitoring process, which lasts for approximately 24 hours. Após esse período, você pode ver o relatório de validação.After this period, you can see the validation report. Este relatório mostra o uso da CPU de seu banco de dados 24 horas antes e depois que a recomendação foi aplicada.This report shows the CPU usage of your database 24 hours before and after the recommendation has been applied. O Assistente do Banco de Dados SQL tem um mecanismo de segurança que reverte a recomendação aplicada automaticamente se uma redução de desempenho seja detectada.SQL Database Advisor has a safety mechanism that automatically reverts the applied recommendation if performance regression has been detected.

Recomendações para corrigir problemas do esquema (versão prévia)Fix schema issues recommendations (preview)

Importante

A Microsoft está atualmente substituindo recomendações do tipo "Corrigir problema de esquema".Microsoft is currently deprecating "Fix schema issue" recommendations. Recomendamos que você use o Intelligent Insights para monitorar seus problemas de desempenho do banco de dados, incluindo problemas de esquema que as recomendações de "Corrigir problemas do esquema" abordaram anteriormente.We recommend that you use Intelligent Insights to monitor your database performance issues, including schema issues that the "Fix schema issue" recommendations previously covered.

Recomendações para Corrigir problemas do esquema aparecem quando o serviço de Banco de Dados SQL observa uma anomalia no número erros de SQL relacionados ao esquema que estão ocorrendo no Banco de Dados SQL.Fix schema issues recommendations appear when the SQL Database service notices an anomaly in the number of schema-related SQL errors that are happening on your SQL database. Essa recomendação normalmente aparece quando seu banco de dados encontra vários erros relacionados ao esquema (nome da coluna inválido, nome do objeto inválido e assim por diante) no período de uma hora.This recommendation typically appears when your database encounters multiple schema-related errors (invalid column name, invalid object name, and so on) within an hour.

“Problemas do esquema” são uma classe de erros de sintaxe no SQL Server.“Schema issues” are a class of syntax errors in SQL Server. Eles ocorrem quando a definição da consulta SQL e a definição do esquema do banco de dados não estão alinhadas.They occur when the definition of the SQL query and the definition of the database schema aren't aligned. Por exemplo, uma das colunas esperadas pela consulta pode estar ausente na tabela de destino ou vice-versa.For example, one of the columns that's expected by the query might be missing in the target table or vice-versa.

A recomendação para “Corrigir problemas do esquema” aparece quando o serviço de Banco de Dados SQL do Azure observa uma anomalia no número erros de SQL relacionados ao esquema ocorrendo no Banco de Dados SQL.The “Fix schema issue” recommendation appears when the Azure SQL Database service notices an anomaly in the number of schema-related SQL errors that are happening on your SQL database. A tabela a seguir mostra os erros relacionados a problemas de esquema:The following table shows the errors that are related to schema issues:

Código do erro SQLSQL error code MensagemMessage
201201 Procedimento ou função ' ' espera o parâmetro ' ', que não foi fornecido.Procedure or function '' expects parameter '', which was not supplied.
207207 Nome de coluna inválido '*'.Invalid column name '*'.
208208 Nome de objeto inválido '*'.Invalid object name '*'.
213213 O nome da coluna ou o número de valores fornecidos não corresponde à definição da tabela.Column name or number of supplied values does not match table definition.
28122812 Não foi possível encontrar o procedimento armazenado '*'.Could not find stored procedure '*'.
81448144 Função ou procedimento * tem muitos argumentos especificados.Procedure or function * has too many arguments specified.

Aplicativos personalizadosCustom applications

Os desenvolvedores podem considerar o desenvolvimento de aplicativos personalizados usando recomendações de desempenho para o banco de dados SQL do Azure.Developers might consider developing custom applications using performance recommendations for Azure SQL Database. Todas as recomendações listadas no portal para um banco de dados podem ser acessadas por meio da API Get-AzSqlDatabaseRecommendedAction .All recommendations listed in the portal for a database can be accessed through Get-AzSqlDatabaseRecommendedAction API.

Próximas etapasNext steps

Monitore suas recomendações e continue a aplicá-las para refinar o desempenho.Monitor your recommendations and continue to apply them to refine performance. Cargas de trabalho de banco de dados são dinâmicas e mudam continuamente.Database workloads are dynamic and change continuously. O Assistente do Banco de Dados SQL continua a monitorar e fornecer recomendações que podem potencialmente melhorar o desempenho do seu banco de dados.SQL Database Advisor continues to monitor and provide recommendations that can potentially improve your database's performance.