A limitação automática de SQL detecta instruções SQL anômalas durante eventos de sobrecarga do banco de dados e restringe a concorrência. Assim, a maioria dos serviços continua em execução enquanto o sistema contém um pequeno conjunto de consultas problemáticas.
Esse recurso automatiza todo o ciclo de resposta: detecta a anomalia, identifica as instruções SQL responsáveis, aplica a limitação com extração precisa de características e reverte a ação caso a carga de trabalho não se recupere conforme o esperado.
Como funciona
Processo completo:
Coleta de métricas de monitoramento
Por padrão, o DAS coleta métricas de desempenho do host e do mecanismo para instâncias do ApsaraDB RDS implantadas no Alibaba Cloud, incluindo:
Utilização de CPU
Operações de entrada/saída por segundo (IOPS)
Consultas por segundo (QPS)
Sessões ativas
Esses dados em tempo real alimentam as etapas de detecção de anomalias e análise de causa raiz.
Detecção de anomalias
O DAS utiliza algoritmos de machine learning para treinar um modelo offline com base em dados históricos de desempenho. Esse modelo avalia métricas em tempo real para detectar exceções à medida que ocorrem e aciona alertas com base no comportamento real do sistema, em vez de limiares fixos.
Análise de causa raiz
Ao detectar uma exceção, o DAS subscreve o evento, coleta dados da sessão atual e usa o recurso de análise completa de solicitações de auditoria de SQL junto com estatísticas do performance_schema para identificar as instruções SQL responsáveis.
O DAS classifica instruções SQL anômalas em quatro tipos:
|
Tipo |
Descrição |
Resposta do DAS |
|
SQL bloqueante |
Instruções que causam alterações DDL, esperas de bloqueio ou transações grandes |
Encerra sessões se muitas forem afetadas ou se o tempo de execução for excessivo — não aplica limitação |
|
SQL com uso intenso de recursos |
Instruções que consomem muitos recursos de CPU, E/S ou rede e são enviadas continuamente, mesmo com baixa concorrência |
Limitada automaticamente |
|
SQL com uso intenso de tráfego |
Instruções normais que causam gargalos de desempenho quando a concorrência aumenta abruptamente (por exemplo, consultas simples de chave-valor que ficam lentas sob carga) |
Limitada automaticamente |
|
Outras SQL |
Instruções que causam exceções no banco de dados, mas não se enquadram nas categorias acima |
— |
Extração de características
Para instruções SQL com uso intenso de recursos e de tráfego, o DAS extrai características identificadoras para aplicar uma limitação precisa. Há suporte a duas estratégias de limitação:
|
Estratégia |
Quando usar |
Como funciona |
|
Limitação baseada em modelo SQL |
Um padrão SQL específico causa exceções independentemente dos valores dos parâmetros |
O DAS extrai o modelo SQL (parâmetros substituídos por |
|
Limitação baseada em instrução SQL |
A distorção de dados causa exceções — valores de parâmetros específicos em um modelo compartilhado consomem recursos desproporcionais |
O DAS extrai características tanto do modelo SQL quanto dos valores específicos dos parâmetros |
Exemplo de limitação baseada em modelo SQL
O DAS gera modelos SQL substituindo valores literais por ?:
/* SQL Statement 1 */
select id,name,age from students where name='Bob';
/* SQL Template 1 */
select id,name,age from students where name=?
/* SQL Statement 2 */
select id,name,age from students where name='Bob' and sid='Unique ID';
/* SQL Template 2 */
select id,name,age from students where name=? and sid=?
Se o DAS aplicar limitação com base no Modelo SQL 1, ele terá como alvo instruções cujas características correspondam a select id, name, age from students where name. Como o Modelo SQL 2 contém todas as características do Modelo SQL 1, a Instrução SQL 2 também será limitada, o que pode não ser o comportamento desejado.
Quando um ID de modelo está disponível — seja um ID SQL gerado pelo middleware do banco de dados ou um SQL hint adicionado pelos desenvolvedores — o DAS o utiliza para definir o escopo da limitação com precisão. Instruções sem o ID do modelo (por exemplo, aquelas enviadas diretamente pela linha de comando) não são afetadas e continuam em execução.
Otimização automática
Após detectar uma instrução SQL anômala passível de otimização durante a análise de causa raiz, o DAS implementa a limitação como resposta de emergência e, simultaneamente, aciona a otimização automática. O DAS cria índices automaticamente nas tabelas afetadas para resolver a causa raiz.
Rastreamento e reversão
Depois de aplicar a limitação, o DAS continua monitorando o desempenho do banco de dados. Se a carga de trabalho não diminuir ou o tráfego não reduzir conforme o esperado, o DAS reverte a operação de limitação e reinicia a análise de causa raiz.
O que aciona eventos de sobrecarga
Os eventos de sobrecarga do banco de dados geralmente se enquadram em três categorias:
Picos de tráfego: Penetração de cache, padrões de chamada anômalos ou eventos promocionais causam um aumento abrupto na concorrência de SQL.
Distorção de dados: Poucas solicitações — como consultas de um único usuário com pedidos grandes — consomem uma parcela desproporcional dos recursos do banco de dados e tornam as respostas mais lentas para todos os usuários.
Consultas com uso intenso de recursos: Consultas em tabelas sem índice ou outros padrões pesados consomem CPU, E/S ou memória suficientes para degradar todo o sistema.
Pré-requisitos
Antes que a limitação automática de SQL possa aplicar restrições em seu nome, conceda as permissões necessárias ao DAS.
Próximos passos
Saiba mais sobre a detecção de anomalias no DAS
Saiba mais sobre a otimização automática de SQL no DAS