O Database Autonomy Service (DAS) detecta automaticamente instruções SQL problemáticas durante picos de tráfego e aplica limitações com base em palavras-chave, sem intervenção manual. Esse recurso protege sua instância ApsaraDB RDS contra degradação de desempenho causada por aumentos repentinos de concorrência, consultas sem índices ou padrões de requisição abusivos.
Versões compatíveis
A limitação automática de SQL está disponível para instâncias ApsaraDB RDS que executam as seguintes versões e edições do MySQL:
|
Versão do MySQL |
Edições compatíveis |
|
MySQL 8.0 |
RDS High-availability Edition, RDS Enterprise Edition |
|
MySQL 5.7 |
RDS High-availability Edition, RDS Enterprise Edition |
|
MySQL 5.6 |
RDS High-availability Edition |
Casos de uso
A limitação automática de SQL foi projetada para os seguintes cenários:
Picos de tráfego: penetração de cache ou requisições suspeitas provocam aumento repentino na concorrência de consultas SQL de um tipo específico.
Consultas pesadas de usuário único: um usuário envia grande volume de consultas SQL em curto período — como um cliente que faz muitos pedidos simultaneamente — e consome parcela desproporcional dos recursos do banco de dados.
Índices ausentes: a execução massiva de instruções SQL sem índices adequados prejudica o desempenho de outras cargas de trabalho.
Limitações
O modo de limitação utilizado é Limitado por palavras-chave.
Tipos de SQL compatíveis: SELECT, UPDATE, DELETE e INSERT
Não é possível limitar instruções INSERT...SELECT...
A limitação de INSERT é compatível apenas com instâncias ApsaraDB RDS com MySQL 8.0 e clusters PolarDB for MySQL com MySQL 5.7 ou 8.0
Como funciona
Quando a limitação automática de SQL é acionada, o comportamento varia conforme a versão do MySQL em execução na instância ApsaraDB RDS.
MySQL 5.6 ou MySQL 5.7
As instruções SQL limitadas são interrompidas e o seguinte erro é retornado ao cliente:
1317: "query execution was interrupted"
MySQL 8.0
As instruções SQL limitadas entram no estado Concurrency control waiting. Se a quantidade de instruções em espera ultrapassar o valor do parâmetro ccl_max_waiting_count, o sistema retorna o seguinte erro:
ERROR 7534 (HY000): "Concurrency control waiting count exceed max waiting count"
O parâmetro ccl_max_waiting_count define quantas instruções limitadas podem aguardar antes que um erro seja retornado:
|
**Valor de |
Comportamento |
|
|
Todas as instruções limitadas aguardam indefinidamente; nenhum erro é retornado |
|
|
O DAS altera automaticamente o valor para |
|
Qualquer valor |
O DAS utiliza o valor especificado |
Ativar a limitação automática de SQL
Acesse a página Instances. Na barra de navegação superior, selecione a região onde sua instância ApsaraDB RDS está localizada. Encontre a instância e clique em seu ID.
-
Abra o painel Autonomous Function Management por um dos caminhos abaixo:
No painel de navegação à esquerda, escolha Autonomy Services > Diagnostics. Clique na aba Autonomy Center e, em seguida, clique em Autonomy Service Settings.
No painel de navegação à esquerda, escolha Autonomy Services > Dashboard. Na aba Performance Trends, clique em Autonomy Service Settings.
-
Na aba Autonomous Function Settings, ative o service de autonomia. Clique na aba Optimization and Throttling, selecione Automatic Throttling e configure as condições de acionamento da limitação.
Quando as condições forem atendidas dentro da janela de tempo configurada, o DAS iniciará o monitoramento da instância. Caso o problema persista após o início da limitação, o DAS reverte automaticamente a operação. A duração da limitação nunca excede o valor definido em Maximum Throttling Duration .
Parâmetro
Descrição
CPU Utilization >
Limiar de uso de CPU. Defina um valor ≥ 70. Por exemplo, insira
80para acionar a limitação quando a utilização da CPU ultrapassar 80%.Number of Active Sessions >
Limiar de contagem de sessões ativas. Defina ≥ 16 ao usar relação OR com CPU Utilization, ou ≥ 2 ao usar relação AND. Por exemplo, insira
64para acionar a limitação quando as sessões ativas excederem 64.Available Time Range
Janela de tempo durante a qual a limitação automática de SQL permanece ativa.
Maximum Throttling Duration
Duração máxima de um único evento de limitação. Se definido como
0, a limitação é acionada imediatamente, mas torna-se inválida logo em seguida.Duration >
Tempo que as condições de CPU e sessão devem persistir antes do acionamento da limitação. Por exemplo, insira
2minutos para que a limitação seja ativada somente após as condições se manterem por mais de 2 minutos.
Clique em OK.
-
(Opcional) Na seção Alert Configuration, configure um modelo de alerta e inscreva-se nas notificações para receber avisos quando uma tarefa de limitação iniciar ou parar. O sistema recomenda um modelo de alerta e preenche previamente regras de alerta para os eventos de autonomia relevantes. Siga as instruções na tela para concluir a configuração.
-
Na etapa Select Alert Contact Group, selecione um grupo de contatos de alerta. Para mais informações, consulte Gerenciar contatos de alerta.
Clique em Add Contact para adicionar um novo contato de alerta.
Clique em Create Contact Group para criar um novo grupo de contatos de alerta.
Clique em Edit ou Remove para atualizar ou excluir um contato existente.
Na etapa Associate with Resources, confirme os recursos associados.
Clique em Submit Configuration e confirme na caixa de diálogo exibida.
Se sua instância ApsaraDB RDS já possuir um modelo de alerta, adicione as regras de alerta necessárias conforme solicitado. Para criar um modelo do zero, consulte Configurar modelos de alerta e Configurar regras de alerta .
-
Visualizar histórico de limitações
Acesse a página Instances. Na barra de navegação superior, selecione a região onde sua instância ApsaraDB RDS está localizada. Encontre a instância e clique em seu ID.
No painel de navegação à esquerda, escolha Autonomy Services > Diagnostics.
Clique na aba Session Management.
-
Na seção Instance Sessions, clique em SQL Throttling. Na caixa de diálogo, visualize as tarefas de limitação por status:
Aba
Descrição
Running
Regras de limitação atualmente em vigor. A tarefa permanece neste estado até que a Maximum Throttling Duration expire ou até que o DAS reverta automaticamente a operação.
Complete
Tarefas de limitação finalizadas. Selecione um intervalo de tempo para filtrar o histórico.


Caso tenha selecionado Kill Abnormal SQL Statements in Execution durante a configuração da limitação, clique em End Session History para visualizar as sessões encerradas.
Próximos passos
Para otimizar instruções SQL e reduzir o consumo de recursos em vez de aplicar limitações, consulte Otimização automática de SQL e Otimização de SQL.
Se as métricas da instância não atingirem o limiar necessário para acionar a limitação automática, configure uma regra de limitação manual. Consulte Limitação de SQL.
Referência de API
|
Operação |
Descrição |
|
Configura assincronamente parâmetros de limitação automática de SQL para várias instâncias de banco de dados simultaneamente |
|
|
Consulta as regras de limitação automática de SQL das instâncias de banco de dados |
|
|
Desativa o recurso de limitação automática de SQL para várias instâncias de banco de dados simultaneamente |