A Microsoft anunciou recentemente um novo recurso incrível – ajuste automático no Banco de Dados SQL do Azure. Para ser honesto, estou completamente impressionado com esse recurso porque os engenheiros da Microsoft usaram inteligência artificial de maneira sofisticada no ajuste de desempenho do SQL Azure. O objetivo é monitorar o banco de dados SQL do Azure e enviar essas observações para o serviço de inteligência interno que gera algumas recomendações. Eles podem ser aplicados fora dos horários de pico. Esse recurso também simplificou o trabalho dos administradores de banco de dados; eles não precisam se preocupar com o desempenho do banco de dados SQL Azure agora.
Há um ponto-chave no ajuste automático do SQL Azure na documentação do MSDN “O ajuste automático aprende horizontalmente de todos os bancos de dados no Azure por meio da Inteligência Artificial e melhora dinamicamente suas ações de ajuste”. Isso significa que o algoritmo de inteligência artificial aprende uma enorme experiência de diferentes bancos de dados SQL Azure. Por esse motivo, essas recomendações serão confiáveis. O recurso de ajuste automático também pode reverter recomendações e se corrigir.
Outra opção interessante sobre esse recurso são as notificações. A Microsoft está aumentando a confiança desse recurso dizendo que ele é implementado em algumas empresas. Talvez essa abordagem possa ser um pouco utópica, mas no futuro a inteligência artificial terá muitas responsabilidades dos administradores de banco de dados. Portanto, o número de tarefas para administradores de banco de dados será reduzido.
Para testar esse recurso, criei duas tabelas no Azure SQL e as preenchi com alguns dados. Depois de gerar esses dados de teste, executei muitas consultas que precisavam dos mesmos índices não clusterizados. Quando examinei o plano de execução de consulta estimado, descobri que ele sugeria um índice não clusterizado. Aproximadamente, após 30 horas, o ajuste automático do SQL do Azure gerou uma recomendação para criar um índice. Para esse tempo de espera, a Microsoft observa que “o Banco de Dados SQL do Azure precisa monitorar as atividades pelo menos por um dia para identificar algumas recomendações”. Esse índice de recomendação de ajuste é o mesmo que o índice ausente. Quando o ajuste automático tentou executar o script, ocorreu um erro devido ao espaço em disco limitado.
/* Missing Index Details from SQLQuery1.sql - xxxx.database.windows.net.Adventureworks (esat.erkec) The Query Processor estimates that implementing the following index could improve the query cost by 99.6269%. */ /* USE [Adventureworks] GO CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>] ON [dbo].[Salesd] ([SalesOrderID]) GO */
As opções de ajuste automático são as seguintes:
- Criar índice que identifica a criação automática de índice que pode afetar o desempenho.
- Índice de queda que identifica índices não utilizados ou redundantes.
- Forçar o último plano válido que define planos de consulta SQL piores que os anteriores. Esse recurso se refere à correção automática do plano no SQL Server 2017.
Como habilitar o ajuste automático do Azure SQL
As consultas do Portal do Azure ou T-SQL permitem habilitar opções de ajuste automático. Esse recurso pode habilitar o ajuste automático nos níveis de servidor ou banco de dados ao mesmo tempo. O nível do banco de dados pode herdar essas opções do nível do servidor.
Agora, nos conectaremos ao Portal do Azure e encontraremos os SQL Servers.
Em seguida, encontre as opções de ajuste automático.
Nesta captura de tela, podemos alterar e aplicar opções de ajuste automático no nível do servidor e na configuração padrão. Todos os bancos de dados são herdados do nível do servidor. No entanto, também podemos alterar essa opção no nível do banco de dados.
A opção Estado Atual define o status atual da opção de ajuste automático. A Microsoft se oferece para gerenciar esse recurso no nível do servidor porque suas configurações podem ser aplicadas a todos os bancos de dados.
Agora, veremos as opções de ajuste automático no nível do banco de dados. Podemos encontrar essas opções em bancos de dados SQL.
Como você pode ver, podemos definir opções de ajuste automático para um banco de dados individual e alterar as opções de herança.
A captura de tela acima identifica as seguintes opções:
- O estado do plano de força é "ON" e herdado do nível do servidor cujo estado é "ON".
- O estado de criação de índice é "OFF" e herdado do nível do servidor. Seu estado é "OFF".
- O estado de queda do índice é “ON” e esta opção é definida apenas para este banco de dados. O nível do servidor não é importante para esta configuração.
Podemos habilitar o ajuste automático via T-SQL:
ALTER DATABASE current SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON, CREATE_INDEX = DEFAULT, DROP_INDEX)
Nesta etapa, examinaremos as recomendações de ajuste automático localizadas abaixo do menu do SQL Server.
Além disso, as recomendações de ajuste automático podem ser encontradas abaixo do menu do banco de dados.
As recomendações de ajuste têm status diferentes:
- Pendente: O comando de recomendação de aplicação foi recebido e está agendado para execução.
- Executando: A recomendação está sendo aplicada.
- Verificando: A recomendação foi aplicada com sucesso e o serviço está avaliando os benefícios.
- Sucesso: A recomendação foi aplicada com sucesso e os benefícios foram medidos.
- Erro: Ocorreu um erro durante o processo de aplicação da recomendação. Isso pode ser um problema transitório ou uma alteração de esquema na tabela e o script não é mais válido.
- Reversão: A recomendação foi aplicada, mas foi considerada ineficiente e está sendo revertida automaticamente.
- Revertido: A recomendação foi revertida.
Quando o ajuste automático cria uma recomendação localizada abaixo da guia Recomendações, o status fica pendente. Quando o status de recomendação de ajuste estiver em execução, progresso, sucesso ou erro, ele será mostrado na guia Histórico de ajuste. Ao mesmo tempo, sys.dm_db_tuning_recommendations pode retornar informações sobre a recomendação de ajuste automático.
SELECT name, JSON_VALUE(state, '$.currentValue') as script, JSON_VALUE(details, '$.implementationDetails.script') as script, details.* FROM sys.dm_db_tuning_recommendations CROSS APPLY OPENJSON(details, '$.createIndexDetails') WITH ( indexName VARCHAR(100) '$.indexName', indexType VARCHAR(100) '$.indexType', table_name VARCHAR(100) '$.table') as details
Ao clicar em Recomendação, podemos encontrar alguns detalhes sobre a recomendação de ajuste.
Podemos obter muitas informações úteis sobre a recomendação de ajuste e gerar um script desse recurso.
Os detalhes que o script retornará são os seguintes:
- Impacto define um nível de prioridade de recomendação de ajuste.
- Espaço em disco necessário define o consumo de armazenamento.
- Tipo de índice define qual tipo de índice será criado.
Conclusões
Na minha opinião, o ajuste automático do SQL Azure é um recurso de nova geração porque a Microsoft está começando a usar algoritmos de inteligência artificial na recomendação de ajuste. Ao mesmo tempo, esse recurso pode levar às seguintes perguntas:
- Quando devo ter essa recomendação de ajuste?
- Esta recomendação de ajuste é útil? Se não for útil, quando devo reverter essa recomendação de ajuste?
Como resultado, o ajuste automático do SQL Azure oferece uma abordagem futurista.
Referências
Ajuste automático no Banco de Dados SQL do Azure
Ajustando o desempenho no Banco de Dados SQL do Azure
A Inteligência Artificial ajusta os Bancos de Dados SQL do Azure