Todos os produtos
Search
Central de documentação

Database Autonomy Service:SQL throttling

Última atualização: Jun 27, 2026

A limitação de SQL permite restringir o número de instruções SQL simultâneas em um banco de dados. Assim, um aumento repentino em um tipo específico de consulta não consome todos os recursos nem derruba o banco de dados.

Como funciona

Ao criar uma regra de limitação, o Database Autonomy Service (DAS) monitora todas as instruções SQL recebidas e verifica cada uma com base nos critérios de correspondência da regra: palavras-chave ou modelo SQL. Quando a quantidade de instruções correspondentes em execução simultânea atinge a concorrência máxima configurada, as novas instruções correspondentes entram em fila de espera ou são rejeitadas imediatamente, dependendo da versão e da configuração da instância.

Fluxo da solicitação:

  1. Uma instrução SQL chega ao banco de dados.

  2. O DAS verifica se a instrução corresponde à regra de limitação (por palavra-chave, modelo, ID do modelo ou tempo de execução).

  3. Se a instrução corresponder e o limite de concorrência ainda não tiver sido atingido, ela será executada normalmente.

  4. Se o limite de concorrência for atingido:

    • Concorrência máxima = número inteiro positivo: A instrução entra em fila de espera. Se o tamanho da fila exceder ccl_max_waiting_count, o banco de dados retornará um erro.

    • Maximum concurrency = 0: A instrução é rejeitada imediatamente e o banco de dados retorna um erro.

Casos de uso

Cenário

Exemplo

Pico de concorrência em um tipo específico de consulta

Penetração de cache ou chamadas anormais da aplicação causam aumento repentino na concorrência de SQL

Consultas que causam distorção de dados

Consultas frequentes a dados quentes durante promoção de vendas sobrecarregam todo o sistema

Varreduras completas de tabela devido à falta de índices

Alto volume de chamadas SQL em tabelas sem índices torna o sistema lento

Bancos de dados compatíveis

Mecanismo de banco de dados

Versões compatíveis

ApsaraDB RDS for MySQL

5,6, 5,7, 8,0

ApsaraDB RDS for PostgreSQL

13 (versão secundária do mecanismo 20250430 ou posterior), 14 (versão secundária 20230330 ou posterior), 15 (versão secundária 20230330 ou posterior), superior a 15 (sem requisito de versão secundária)

PolarDB for MySQL

5,6, 5,7, 8,0

PolarDB-X 2.0

Modos de limitação

Escolha o modo adequado para identificar as instruções SQL a limitar.

Modo

Descrição

Bancos de dados aplicáveis

Throttle by keyword

Limita instruções SQL contendo todas as palavras-chave especificadas. Observação: este modo não direciona uma única instrução específica; ele corresponde a qualquer instrução que contenha todas as palavras-chave listadas.

ApsaraDB RDS for MySQL, PolarDB for MySQL, PolarDB-X 2.0

Throttle by SQL template

Insira uma instrução SQL de exemplo. O DAS a converte em modelo e limita todas as instruções correspondentes.

ApsaraDB RDS for MySQL 8,0 (versão secundária do mecanismo 20230630 ou posterior); ApsaraDB RDS for PostgreSQL 13 (versão secundária 20250430 ou posterior), 14/15 (versão secundária 20230330 ou posterior) e superior a 15; PolarDB for MySQL 8.0.1 (versão secundária 8.0.1.1.31 ou posterior) e 8.0.2 (versão secundária 8.0.2.2.12 ou posterior)

Throttle by SQL template ID

Insira diretamente um ID de modelo SQL. Obtenha o ID nos logs de SQL, sessões ou resultados de EXPLAIN. Um ID de modelo é uma string hexadecimal de 8 caracteres.

PolarDB-X 2.0 Enterprise Edition

Throttle by execution time

Defina um limiar de tempo de execução. O DAS adiciona automaticamente os IDs de modelo das instruções que excedem o limiar à regra de limitação e aplica o limite de concorrência configurado.

PolarDB-X 2.0 Enterprise Edition

Crie uma regra de limitação

Importante

A limitação de SQL é uma medida de emergência. Defina duração curta e desative a regra assim que resolver a situação.

  1. Faça login no console do DAS.

  2. No painel de navegação à esquerda, clique em Intelligent O&M Center > Instance Monitoring.

  3. Localize a instância de destino e clique no ID da instância para acessar a página de detalhes.

  4. No painel de navegação à esquerda, clique em Instance Sessions.

  5. Na página Session Management, clique em SQL Throttling.

  6. Na caixa de diálogo exibida, clique em Create Throttling Rule.

  7. Na caixa de diálogo Create Throttling Rule, configure os parâmetros do mecanismo de banco de dados.

ApsaraDB RDS for MySQL

Parâmetro Descrição
Throttling mode Selecione um modo de limitação.
SQL type Selecione o tipo de instrução SQL a limitar: SELECT, UPDATE, DELETE ou INSERT. Obrigatório quando Throttling mode estiver definido como Throttle by keyword.
Nota

Instruções INSERT só podem ser limitadas no ApsaraDB RDS for MySQL 8,0, PolarDB for MySQL 5,7 e 8,0 e PolarDB-X 2.0. Instruções INSERT...SELECT... não podem ser limitadas.

Database Banco de dados onde aplicar a regra de limitação. Obrigatório quando Throttling mode estiver definido como Throttle by SQL template.
Maximum concurrency Número máximo de instruções SQL executadas simultaneamente. Valor mínimo: 0. A limitação é acionada quando as instruções correspondentes simultâneas atingem esse número.
Throttling duration Período em que a regra de limitação permanece ativa. Desative a regra manualmente se a situação for resolvida antes do término da duração.
SQL keyword Obrigatório quando Throttling mode estiver definido como Throttle by keyword. Insira as palavras-chave que identificam as instruções a limitar. Separe várias palavras-chave com til (~). Uma instrução só será limitada se contiver todas as palavras-chave especificadas, independentemente da ordem.
Nota

As palavras-chave diferenciam maiúsculas de minúsculas na maioria das versões. Não use apenas SELECT, INSERT, UPDATE ou DELETE como palavras-chave. Exemplo: Para a instrução SELECT min(id), max(id) FROM task_event WHERE gmt_modified < '2020-06-21' AND begin_time > '2020-07-09' AND source IN (527) AND id >= 15673 AND id <= 8015673, as palavras-chave correspondentes são: SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id.

SQL sample Obrigatório quando Throttling mode estiver definido como Throttle by SQL template. Insira uma instrução SQL representativa. O DAS a converte em modelo substituindo valores literais por espaços reservados. Por exemplo, select name from das where name = \das\ and age = 21 limit 20 torna-se o modelo select name from das where name = ? and age = ? limit ?. A normalização da amostra pelo DAS não afeta o efeito da limitação.

ApsaraDB RDS for PostgreSQL

O ApsaraDB RDS for PostgreSQL oferece suporte apenas ao modo Throttle by SQL template.

Parâmetro

Descrição

Database

Banco de dados onde aplicar a regra de limitação.

Search path

Caminho de busca de esquema para a regra de limitação. Separe vários caminhos com vírgulas (,). Padrão: information_schema,public.

Maximum concurrency

Número máximo de instruções SQL executadas simultaneamente. Valor mínimo: 0. A limitação é acionada quando as instruções correspondentes simultâneas atingem esse número.

Maximum waiting queries

Quantidade máxima de instruções permitidas na fila de espera.

Throttling duration

Período em que a regra de limitação permanece ativa. Desative a regra manualmente se a situação for resolvida antes do término da duração.

SQL sample

Insira uma instrução SQL representativa. O DAS a converte em modelo substituindo valores literais por espaços reservados. Por exemplo, select name from das where name = "das" and age = 21 limit 20 torna-se select name from das where name = ? and age = ? limit ?.

PolarDB for MySQL

Parâmetro Descrição
Throttling mode Selecione um modo de limitação.
SQL type Selecione o tipo de instrução SQL a limitar: SELECT, UPDATE, DELETE ou INSERT.
Nota

Instruções INSERT só podem ser limitadas no ApsaraDB RDS for MySQL 8,0, PolarDB for MySQL 5,7 e 8,0 e PolarDB-X 2.0. Instruções INSERT...SELECT... não podem ser limitadas.

Maximum concurrency Número máximo de instruções SQL executadas simultaneamente. Valor mínimo: 0.
Database Banco de dados onde aplicar a regra de limitação. Obrigatório quando Throttling mode estiver definido como Throttle by SQL template.
Throttling duration Período em que a regra de limitação permanece ativa.
SQL keyword Obrigatório quando Throttling mode estiver definido como Throttle by keyword. Aplicam-se as mesmas regras do ApsaraDB RDS for MySQL. Separe várias palavras-chave com ~. A instrução deve conter todas as palavras-chave especificadas para ser limitada.
SQL sample Obrigatório quando Throttling mode estiver definido como Throttle by SQL template. O DAS converte a amostra em modelo substituindo valores literais por espaços reservados.

PolarDB-X 2.0

Parâmetro Descrição
Throttling mode Selecione um modo de limitação.
SQL type Selecione o tipo de instrução SQL a limitar: SELECT, UPDATE, DELETE ou INSERT.
Nota

Instruções INSERT só podem ser limitadas no ApsaraDB RDS for MySQL 8,0, PolarDB for MySQL 5,7 e 8,0 e PolarDB-X 2.0. Instruções INSERT...SELECT... não podem ser limitadas.

Maximum concurrency Número máximo de instruções SQL executadas simultaneamente. Valor mínimo: 0.
Throttling duration Período em que a regra de limitação permanece ativa.
SQL keyword Obrigatório quando Throttling mode estiver definido como Throttle by keyword. Separe várias palavras-chave com ~. A instrução deve conter todas as palavras-chave especificadas para ser limitada.
SQL template ID Obrigatório para o PolarDB-X 2.0 Enterprise Edition quando Throttling mode estiver definido como Throttle by SQL template. Insira um ou mais IDs de modelo hexadecimais de 8 caracteres, separados por vírgulas (,). Obtenha os IDs de modelo nos logs de SQL, sessões ou resultados de EXPLAIN.
Minimum SQL execution duration Obrigatório para o PolarDB-X 2.0 Enterprise Edition quando Throttling mode estiver definido como Throttle by execution time. Limiar de tempo de execução. Quando uma instrução excede esse limiar, o DAS adiciona automaticamente seu ID de modelo à regra de limitação.
Maximum throttled SQL IDs Obrigatório para o PolarDB-X 2.0 Enterprise Edition quando Throttling mode estiver definido como Throttle by execution time. Número máximo de IDs de modelo SQL passíveis de limitação. Após atingir esse limite, o DAS para de adicionar novos IDs de modelo, mesmo que outras instruções excedam o limiar.
Database account with throttled queries Obrigatório quando Throttling mode estiver definido como Throttle by keyword ou Throttle by SQL template. Conta do banco de dados cujas instruções SQL estão sujeitas à limitação.
  1. Clique em Submit para crie a regra.

Comportamento de limitação e códigos de erro

Quando uma regra de limitação é acionada, o banco de dados retorna um erro à aplicação. O código de erro exato depende da versão da instância e da concorrência máxima configurada.

Concorrência máxima Instância Código de erro Mensagem de erro
0 ou número inteiro positivo ApsaraDB RDS for MySQL 5,6 1317 query execution was interrupted
ApsaraDB RDS for MySQL 5,7 (versão secundária anterior a 20200630) 1317
PolarDB for MySQL 5,6 1317
Número inteiro positivo ApsaraDB RDS for MySQL 5,7 (versão secundária 20200630 ou posterior) 5041 Concurrency control waiting count exceed max waiting count
ApsaraDB RDS for MySQL 8,0 7534
PolarDB for MySQL 5,7 3277
PolarDB for MySQL 8,0 7533
0 ApsaraDB RDS for MySQL 5,7 (versão secundária 20200630 ou posterior) 5042 Concurrency control refuse to execute query
ApsaraDB RDS for MySQL 8,0 7535
PolarDB for MySQL 5,7 3278
PolarDB for MySQL 8,0 7534

Parâmetros adicionais para instâncias compatíveis:

  • ccl_max_waiting_count (ApsaraDB RDS for MySQL 5,7 versão secundária 20200630 ou posterior, ApsaraDB RDS for MySQL 8,0): Define o tamanho máximo da fila. Se definido como 0, o DAS usa o valor padrão 10.

  • ccl_wait_timeout (ApsaraDB RDS for MySQL 5,7 versão secundária 20200630 ou posterior, ApsaraDB RDS for MySQL 8,0): Define tempo limite para instruções em espera, caso a versão da instância ofereça suporte. Instruções que excedem esse tempo limite continuam a execução e deixam de estar sujeitas à limitação.

  • ccl_mode (PolarDB for MySQL 8,0): Controla o comportamento quando o limite de concorrência é excedido. Este parâmetro está disponível apenas nas versões de instância compatíveis.

    • WAIT (padrão): As instruções aguardam em fila.

    • REFUSE: As instruções são rejeitadas imediatamente, sem espera.

Visualize e gerencie regras de limitação

Após criar uma regra, ela aparece na aba Running com os seguintes detalhes.

As colunas exibidas variam conforme o mecanismo de banco de dados e o modo de limitação.

Coluna

Descrição

Throttling mode

Modo selecionado durante a criação da regra.

Throttling rule

Configuração da regra: palavras-chave (modo de palavra-chave), ID do modelo (modo de modelo) ou limiar de tempo de execução e contagem de instruções limitadas (modo de tempo de execução).

Maximum concurrency

Limite de concorrência configurado.

Maximum waiting queries

Tamanho máximo da fila. Exibido para ApsaraDB RDS for PostgreSQL no modo de modelo SQL.

Throttling duration (min)

Duração ativa configurada.

Start time

Horário em que a regra entrou em vigor.

Remaining time (s)

Tempo restante antes da expiração da regra.

Sample SQL

Amostra de SQL usada para gerar o modelo. Exibido no modo de modelo SQL.

Throttling template ID

ID do modelo correspondente à amostra de SQL limitada. Exibido no modo de modelo SQL.

Status

Regra em execução exibe Enabled.

Database

Banco de dados onde a regra se aplica. Exibido no modo de modelo SQL.

Search path

Caminho de busca de esquema. Exibido para ApsaraDB RDS for PostgreSQL no modo de modelo SQL.

Matched SQL query

Número de instruções SQL correspondidas pela regra. Exibido no modo de modelo SQL.

Waiting SQL query

Número de instruções SQL atualmente em fila de espera. Exibido no modo de modelo SQL.

Actions

Disable ou Modify a regra.

Próximos passos

Referência de API

API

Descrição

EnableSqlConcurrencyControl

Ativa a limitação de SQL.

DisableSqlConcurrencyControl

Desativa uma regra de limitação específica.

DisableAllSqlConcurrencyControlRules

Desativa todas as regras de limitação em execução.

GetRunningSqlConcurrencyControlRules

Obtém as regras de limitação em execução.

GetSqlConcurrencyControlRulesHistory

Obtém regras de limitação em execução ou já acionadas.

GetSqlConcurrencyControlKeywordsFromSqlText

Gera palavras-chave de limitação a partir de uma instrução SQL.