O Database Autonomy Service (DAS) oferece o recurso de limitação de SQL para controlar o volume de requisições de acesso ao banco de dados e a concorrência de SQL, garantindo a disponibilidade do service.
Pré-requisitos
Mecanismos de banco de dados compatíveis:
ApsaraDB RDS for MySQL 5,6, 5,7 e 8,0.
-
ApsaraDB RDS for PostgreSQL 13 e versões posteriores.
NotaPara o PostgreSQL 13, a minor engine version deve ser 20250430 ou posterior.
Para o PostgreSQL 14 ou 15, a versão secundária do mecanismo deve ser 20230330 ou posterior.
Para versões do PostgreSQL posteriores à 15, qualquer versão secundária do mecanismo é compatível.
PolarDB for MySQL 5,6, 5,7 e 8,0.
PolarDB-X 2.0.
MongoDB.
Mensagens de erro de limitação
Após a criação de uma regra de limitação de SQL, o sistema de banco de dados retorna uma mensagem de erro específica se uma aplicação executar uma instrução SQL correspondente às palavras-chave ou ao modelo da regra.
|
Concorrência máxima |
Versão da instância |
Código de erro |
Mensagem de erro |
|
0 ou um número inteiro positivo |
|
1317 |
|
|
MongoDB |
56900 |
|
|
|
Número inteiro positivo |
ApsaraDB RDS for MySQL 5,7 (versão secundária do mecanismo 20200630 ou posterior) |
5041 |
Nota
Quando a concorrência máxima é um número inteiro positivo, as consultas SQL relacionadas permanecem no estado |
|
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 do mecanismo 20200630 ou posterior) |
5042 |
Nota
Se a concorrência máxima for 0, o sistema retornará um erro imediatamente. |
|
ApsaraDB RDS for MySQL 8,0 |
7535 |
||
|
PolarDB for MySQL 5,7 |
3278 |
||
|
PolarDB for MySQL 8,0 |
7534 |
Durante a limitação de SQL pelo DAS, se o parâmetro
ccl_max_waiting_countestiver definido como 0, o DAS utilizará o valor padrão de 10. Caso o parâmetro tenha um valor superior a 0, o DAS usará o valor especificado.Nas instâncias ApsaraDB RDS for MySQL 5,7 (com versão secundária 20200630 ou posterior) e ApsaraDB RDS for MySQL 8,0, se o parâmetro
ccl_wait_timeoutestiver configurado (e for compatível com a versão da instância), as instruções SQL no estadoConcurrency control waitingcontinuarão a execução e deixarão de ser limitadas após a ultrapassagem desse limite.-
Para instâncias PolarDB for MySQL 8,0, defina o parâmetro
ccl_modepara controlar o comportamento das instruções SQL quando o limite de concorrência for excedido. Este parâmetro está disponível apenas nas versões de instância compatíveis.WAIT (padrão): A instrução aguarda em uma fila.
REFUSE: A instrução não aguarda e o sistema retorna um erro imediatamente.
Cenários
|
Cenário |
Descrição |
|
Aumento repentino na concorrência de SQL |
Penetração de cache ou chamadas anormais podem causar um aumento súbito na concorrência de SQL. |
|
Consultas SQL com skew de dados |
Consultas frequentes a dados quentes durante uma promoção de vendas podem sobrecarregar o sistema. |
|
Índices ausentes |
Um alto volume de chamadas SQL em uma tabela sem índice pode sobrecarregar o sistema. |
Modos de limitação
|
Modo |
Descrição |
Bancos de dados compatíveis |
|
Keyword throttling |
Limita instruções SQL que contêm palavras-chave especificadas. Nota
Não é possível usar este modo para limitar uma instrução SQL específica. |
|
|
Throttle by SQL Template |
Insira um exemplo de SQL. O sistema o processa em um modelo de SQL e limita todas as instruções SQL correspondentes. |
|
|
Limita instruções SQL correspondendo aos IDs de modelo de SQL. Obtenha os IDs de modelo de SQL nos logs de SQL, sessões e resultados de execução EXPLAIN. Nota
Um ID de modelo de SQL é uma string hexadecimal de 8 caracteres. |
PolarDB-X 2.0 Enterprise Edition |
|
|
Throttle by Execution Duration |
Se o tempo de execução de uma instrução SQL exceder o limiar especificado, o sistema adicionará automaticamente seu ID de modelo de SQL à regra de limitação. As instruções subsequentes correspondentes a esse ID serão executadas com base na concorrência definida na regra. Nota
Também é possível definir um limite para o número de IDs de modelo de SQL limitados. Ao atingir esse limite, o sistema não criará novas regras de limitação para outras instruções SQL. |
PolarDB-X 2.0 Enterprise Edition |
|
Operation Type Throttling |
Controla a concorrência de operações find, insert, update e delete em uma coleção especificada. |
MongoDB
|
Procedimento
Este tópico usa o ApsaraDB RDS for MySQL como exemplo para descrever como utilizar o recurso de limitação. Para operações relacionadas a outros tipos de banco de dados, consulte Related documentation.
Faça login no console do DAS.
No painel de navegação à esquerda, clique em .
Localize a instância desejada e clique no ID da instância para abrir a página de detalhes.
No painel de navegação à esquerda, clique em Instance Sessions.
Na página Session Management, clique em SQL Throttling.
Na caixa de diálogo, clique em Create Throttling Rule.
Na caixa de diálogo Create Throttling Rule, configure os seguintes parâmetros de acordo com o mecanismo de banco de dados.
-
Este parâmetro é obrigatório se você definir o Throttling Mode como Throttle by Keyword.
-
É possível limitar instruções INSERT apenas nos seguintes mecanismos de banco de dados:
-
ApsaraDB RDS for MySQL 8,0
-
PolarDB for MySQL 5,7 e 8,0
-
PolarDB-X 2.0
-
-
Não é possível limitar instruções
INSERT...SELECT.... -
Este parâmetro é obrigatório se você definir o Throttling Mode como Throttle by Keyword.
-
Ao especificar várias palavras-chave, a regra de limitação será acionada apenas se uma instrução SQL contiver todas as palavras-chave especificadas. Separe múltiplas palavras-chave com til (~). A ordem das palavras-chave não importa.
Por exemplo, se a instrução original for
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 de limitação correspondentes serão
SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id. -
Não é possível especificar apenas
SELECT, INSERT, UPDATE, DELETEcomo palavras-chave de limitação. As palavras-chave diferenciam maiúsculas de minúsculas. No entanto, algumas versões anteriores de instâncias não fazem essa distinção. -
Este parâmetro é obrigatório se você definir o Throttling Mode como Throttle by SQL Template.
-
Para instruções SQL complexas, o DAS transforma o SQL Sample para processamento interno, mas o modelo final de SQL permanece inalterado. Essa transformação não afeta o efeito da limitação.
Por exemplo, se você inserir
select name from das where name =,dasand age = 21 limit 20ele será convertido no modelo
select name from das where name = ? and age = ? limit ?e depois reescrito como
select name from das where name =.param0and age =param1limit 20 -
Este parâmetro é obrigatório se você definir o Throttling Mode como Throttle by SQL Template.
-
Para instruções SQL complexas, o DAS transforma o SQL Sample para processamento interno, mas o modelo final de SQL permanece inalterado. Essa transformação não afeta o efeito da limitação.
Por exemplo, se você inserir
select name from das where name = "das" and age = 21 limit 20,ele será convertido no modelo
select name from das where name = ? and age = ? limit ?e depois reescrito como
select name from das where name = "param0" and age = "param1" limit 20. -
É possível limitar instruções
INSERTapenas nos seguintes mecanismos de banco de dados:-
ApsaraDB RDS for MySQL 8,0
-
PolarDB for MySQL 5,7 e 8,0
-
PolarDB-X 2.0
-
-
Não é possível limitar instruções
INSERT...SELECT.... -
Este parâmetro é obrigatório se você definir o Throttling Mode como Throttle by Keyword.
-
Ao especificar várias palavras-chave, a regra de limitação será acionada apenas se uma instrução SQL contiver todas as palavras-chave especificadas. Separe múltiplas palavras-chave com til (~). A ordem das palavras-chave não importa.
Por exemplo, se a instrução original for
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 de limitação correspondentes serão
SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id. -
Não é possível especificar apenas SELECT, INSERT, UPDATE ou DELETE como palavras-chave de limitação. As palavras-chave diferenciam maiúsculas de minúsculas. No entanto, algumas versões anteriores de instâncias não fazem essa distinção.
-
Este parâmetro é obrigatório se você definir o Throttling Mode como Throttle by SQL Template.
-
Para instruções SQL complexas, o DAS transforma o SQL Sample para processamento interno, mas o modelo final de SQL permanece inalterado. Essa transformação não afeta o efeito da limitação.
Por exemplo, se você inserir
select name from das where name = "das" and age = 21 limit 20,ele será convertido no modelo
select name from das where name = ? and age = ? limit ?e depois reescrito como
select name from das where name = "param0" and age = "param1" limit 20. -
É possível limitar instruções
INSERTapenas nos seguintes mecanismos de banco de dados:-
ApsaraDB RDS for MySQL 8,0
-
PolarDB for MySQL 5,7 e 8,0
-
PolarDB-X 2.0
-
-
Não é possível limitar instruções
INSERT...SELECT.... -
Este parâmetro é obrigatório se você definir o Throttling Mode como Throttle by Keyword.
-
Ao especificar várias palavras-chave, a regra de limitação será acionada apenas se uma instrução SQL contiver todas as palavras-chave especificadas. Separe múltiplas palavras-chave com til (~). A ordem das palavras-chave não importa.
Por exemplo, se a instrução original for
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 de limitação correspondentes serão
SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id. -
Não é possível especificar apenas SELECT, INSERT, UPDATE ou DELETE como palavras-chave de limitação. As palavras-chave diferenciam maiúsculas de minúsculas. No entanto, algumas versões anteriores de instâncias não fazem essa distinção.
-
Clique em Submit.
Após a criação da regra de limitação de SQL, visualize seus detalhes na aba Running. A tabela a seguir descreve os parâmetros.
NotaOs parâmetros na lista variam ligeiramente dependendo do mecanismo de banco de dados e do modo de limitação.
Parâmetro
Descrição
Throttling Mode
Modo selecionado.
Throttling Rule
-
Throttle by Keyword: Palavras-chave de limitação configuradas.
-
Throttle by SQL Template: ID do modelo correspondente ao SQL Sample.
-
Throttle by Execution Duration: Limiar de tempo de execução configurado e número de modelos de SQL limitados.
Maximum Concurrency
Número máximo de instruções SQL simultâneas.
Maximum Waiting Queries
Número máximo de consultas em espera configurado na regra de limitação.
NotaEste parâmetro é exibido para instâncias ApsaraDB RDS for PostgreSQL quando o Throttling Mode está definido como Throttle by SQL Template.
Throttling Duration (min)
Duração durante a qual a regra de limitação de SQL permanece efetiva.
Start Time
Momento em que a regra de limitação foi configurada e entrou em vigor.
Remaining time
Tempo restante antes da expiração da regra de limitação.
SQL Sample
Exemplo de instrução SQL a ser limitada.
NotaEste parâmetro é exibido se você definir o Throttling Mode como Throttle by SQL Template.
Throttling Template ID
ID do modelo correspondente ao SQL Sample.
NotaEste parâmetro é exibido se você definir o Throttling Mode como Throttle by SQL Template.
Status
Indica que a regra está ativa.
Database
Banco de dados onde as instruções SQL serão limitadas.
NotaEste parâmetro é exibido se você definir o Throttling Mode como Throttle by SQL Template.
Search Path
Caminho de busca correspondente à instrução SQL limitada.
NotaEste parâmetro é exibido para instâncias ApsaraDB RDS for PostgreSQL quando o Throttling Mode está definido como Throttle by SQL Template.
Matched SQL Query
Número de consultas SQL correspondentes à regra de limitação.
NotaEste parâmetro é exibido se você definir o Throttling Mode como Throttle by SQL Template.
Waiting SQL Query
Número de consultas SQL em espera devido à regra de limitação.
NotaEste parâmetro é exibido se você definir o Throttling Mode como Throttle by SQL Template.
Actions
Permite Disable ou Modify a regra.
-
RDS for MySQL
|
Parâmetro |
Descrição |
|
Throttling Mode |
Selecione um modo de limitação conforme necessário. |
|
SQL Type |
Tipo da instrução SQL. Valores válidos: SELECT, UPDATE, DELETE e INSERT. Nota
|
|
Database |
Banco de dados onde as instruções SQL serão limitadas. Nota
Este parâmetro é obrigatório se você definir o Throttling Mode como Throttle by SQL Template. |
|
Maximum Concurrency |
Número máximo de instruções SQL simultâneas. O valor mínimo é 0. Nota
A limitação começa quando o número de instruções SQL simultâneas correspondentes à regra atinge esse valor. |
|
Throttling Duration |
Duração durante a qual a regra de limitação de SQL permanece efetiva. Importante
A limitação de SQL é uma medida de emergência. Recomendamos definir a duração com base nas necessidades do seu negócio e desativar a regra quando ela não for mais necessária. |
|
SQL Keywords |
Palavras-chave nas instruções SQL a serem limitadas. Nota
|
|
SQL Sample |
Exemplo de instrução SQL a ser limitada. Nota
|
RDS for PostgreSQL
|
Parâmetro |
Descrição |
|
Throttling Mode |
O ApsaraDB RDS for PostgreSQL é compatível apenas com Throttle by SQL Template. |
|
Database |
Banco de dados onde as instruções SQL serão limitadas. |
|
Search Path |
Caminho de busca para a limitação de SQL. Nota
Separe vários caminhos com vírgulas ( |
|
Maximum Concurrency |
Número máximo de instruções SQL simultâneas. O valor mínimo é 0. Nota
A limitação começa quando o número de instruções SQL simultâneas correspondentes à regra atinge esse valor. |
|
Maximum Waiting Queries |
Número máximo de consultas em espera. |
|
Throttling Duration |
Duração durante a qual a regra de limitação de SQL permanece efetiva. Importante
A limitação de SQL é uma medida de emergência. Recomendamos definir a duração com base nas necessidades do seu negócio e desativar a regra quando ela não for mais necessária. |
|
SQL Sample |
Exemplo de instrução SQL a ser limitada. Nota
|
PolarDB for MySQL
|
Parâmetro |
Descrição |
|
Throttling Mode |
Selecione um modo de limitação conforme necessário. |
|
SQL Type |
Tipo da instrução SQL. Valores válidos: Nota
|
|
Maximum Concurrency |
Número máximo de instruções SQL simultâneas. O valor mínimo é 0. Nota
A limitação começa quando o número de instruções SQL simultâneas correspondentes à regra atinge esse valor. |
|
Database |
Banco de dados onde as instruções SQL serão limitadas. Nota
Este parâmetro é obrigatório se você definir o Throttling Mode como Throttle by SQL Template. |
|
Throttling Duration |
Duração durante a qual a regra de limitação de SQL permanece efetiva. Importante
A limitação de SQL é uma medida de emergência. Recomendamos definir a duração com base nas necessidades do seu negócio e desativar a regra quando ela não for mais necessária. |
|
SQL Keywords |
Palavras-chave nas instruções SQL a serem limitadas. Nota
|
|
SQL Sample |
Exemplo de instrução SQL a ser limitada. Nota
|
PolarDB-X 2.0
|
Parâmetro |
Descrição |
|
Throttling Mode |
Selecione um modo de limitação conforme necessário. |
|
SQL Type |
Tipo da instrução SQL. Valores válidos: Nota
|
|
Maximum Concurrency |
Número máximo de instruções SQL simultâneas. O valor mínimo é 0. Nota
A limitação começa quando o número de instruções SQL simultâneas correspondentes à regra atinge esse valor. |
|
Throttling Duration |
Duração durante a qual a regra de limitação de SQL permanece efetiva. Importante
A limitação de SQL é uma medida de emergência. Recomendamos definir a duração com base nas necessidades do seu negócio e desativar a regra quando ela não for mais necessária. |
|
SQL Keywords |
Palavras-chave nas instruções SQL a serem limitadas. Nota
|
|
SQL Template ID |
ID do modelo de SQL a ser limitado. Um ID é uma string hexadecimal de 8 caracteres. Separe vários IDs de modelo de SQL com vírgulas ( Nota
Este parâmetro é obrigatório para instâncias PolarDB-X quando o Throttling Mode está definido como Throttle by SQL Template. |
|
Minimum SQL Execution Duration |
Limiar para o tempo de execução de SQL. Se o tempo de execução de uma instrução SQL exceder o limiar especificado, o sistema adiciona o ID do modelo da instrução SQL à regra de limitação. Nota
Este parâmetro é obrigatório para instâncias PolarDB-X quando o Throttling Mode está definido como Throttle by Execution Duration. |
|
Maximum Number of Throttled Queries |
Número máximo de IDs de modelo de SQL que podem ser limitados com base no tempo de execução. Após atingir esse limite, o sistema não cria mais regras de limitação para outras instruções SQL cujo tempo de execução exceda o limiar especificado. Nota
Este parâmetro é obrigatório para instâncias PolarDB-X quando o Throttling Mode está definido como Throttle by Execution Duration. |
|
Database Account with Throttled Queries |
Conta de banco de dados associada à instrução SQL limitada. Nota
Este parâmetro é obrigatório se você definir o Throttling Mode como Throttle by Keyword ou Throttle by SQL Template. |
MongoDB
|
Parâmetro |
Descrição |
|
Operation type |
Selecione os tipos de operação a serem limitados. É possível selecionar vários tipos. Valores válidos: |
|
Operation concurrency |
Especifique o número máximo de operações simultâneas permitidas para os tipos de operação selecionados. Requisições que excederem esse limiar serão limitadas. |
|
Throttling duration |
Defina a duração ativa para a regra de limitação. Após a expiração da regra, o sistema a desativa automaticamente e a move para a aba Ended. |
|
Kill Statement |
(Opcional) Se você ativar esta opção, quando a regra de limitação entrar em vigor, o sistema encerrará (kill) automaticamente quaisquer operações ativas correspondentes à regra, como operações |
|
Throttling scope |
Esta opção está disponível apenas para instâncias de cluster fragmentado do ApsaraDB for MongoDB. Aplique a regra a All Shards ou Partial Shards. |
|
Throttled collections |
Especifique as coleções às quais a regra se aplica. Use o formato |
Tópicos relacionados
APIs relacionadas
|
API |
Descrição |
|
Ativa a limitação de SQL. |
|
|
Desativa uma regra de limitação especificada. |
|
|
Desativa todas as regras de limitação em execução. |
|
|
Retorna as regras de limitação em execução. |
|
|
Retorna as regras de limitação em execução ou acionadas. |
|
|
Gera palavras-chave de limitação a partir de uma instrução SQL. |