Cette rubrique utilise ApsaraDB RDS for MySQL comme exemple pour décrire l'utilisation de la fonctionnalité de limitation. Pour les opérations relatives à d'autres types de bases de données, consultez la documentation connexe.
Connectez-vous à la console DAS.
Dans le volet de navigation de gauche, cliquez sur .
Recherchez l'instance cible et cliquez sur son ID pour ouvrir la page des détails de l'instance.
Dans le volet de navigation de gauche, cliquez sur Instance Sessions.
Sur la page Session Management, cliquez sur SQL Throttling.
Dans la boîte de dialogue, cliquez sur Create Throttling Rule.
Dans la boîte de dialogue Create Throttling Rule, configurez les paramètres suivants en fonction du moteur de base de données.
-
Ce paramètre est obligatoire si vous définissez Throttling Mode sur Throttle by Keyword.
-
Vous ne pouvez limiter les instructions INSERT que sur les moteurs de base de données suivants :
-
ApsaraDB RDS for MySQL 8,0
-
PolarDB for MySQL 5,7 et 8,0
-
PolarDB-X 2,0
-
-
Vous ne pouvez pas limiter les instructions
INSERT...SELECT.... -
Ce paramètre est obligatoire si vous définissez Throttling Mode sur Throttle by Keyword.
-
Si vous spécifiez plusieurs mots-clés, la règle de limitation ne se déclenche que si une instruction SQL contient tous les mots-clés spécifiés. Séparez les différents mots-clés par des tildes (~). L'ordre des mots-clés n'a pas d'importance.
Par exemple, si l'instruction d'origine est
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,les mots-clés de limitation correspondants sont
SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id. -
Vous ne pouvez pas spécifier uniquement
SELECT, INSERT, UPDATE, DELETEcomme mots-clés de limitation. Les mots-clés sont sensibles à la casse. Toutefois, certaines versions antérieures des instances ne sont pas sensibles à la casse. -
Ce paramètre est obligatoire si vous définissez Throttling Mode sur Throttle by SQL Template.
-
Pour les instructions SQL complexes, DAS transforme l'exemple SQL pour le traitement interne, mais le modèle SQL final reste inchangé. L'effet de limitation n'est pas affecté par cette transformation.
Par exemple, si vous saisissez
select name from das where name =,dasand age = 21 limit 20il est modélisé sous la forme
select name from das where name = ? and age = ? limit ?puis réécrit en
select name from das where name =.param0and age =param1limit 20 -
Ce paramètre est obligatoire si vous définissez Throttling Mode sur Throttle by SQL Template.
-
Pour les instructions SQL complexes, DAS transforme l'exemple SQL pour le traitement interne, mais le modèle SQL final reste inchangé. L'effet de limitation n'est pas affecté par cette transformation.
Par exemple, si vous saisissez
select name from das where name = "das" and age = 21 limit 20,il est modélisé sous la forme
select name from das where name = ? and age = ? limit ?puis réécrit en
select name from das where name = "param0" and age = "param1" limit 20. -
Vous ne pouvez limiter les instructions
INSERTque sur les moteurs de base de données suivants :-
ApsaraDB RDS for MySQL 8,0
-
PolarDB for MySQL 5,7 et 8,0
-
PolarDB-X 2,0
-
-
Vous ne pouvez pas limiter les instructions
INSERT...SELECT.... -
Ce paramètre est obligatoire si vous définissez Throttling Mode sur Throttle by Keyword.
-
Si vous spécifiez plusieurs mots-clés, la règle de limitation ne se déclenche que si une instruction SQL contient tous les mots-clés spécifiés. Séparez les différents mots-clés par des tildes (~). L'ordre des mots-clés n'a pas d'importance.
Par exemple, si l'instruction d'origine est
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,les mots-clés de limitation correspondants sont
SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id. -
Vous ne pouvez pas spécifier uniquement SELECT, INSERT, UPDATE ou DELETE comme mots-clés de limitation. Les mots-clés sont sensibles à la casse. Toutefois, certaines versions antérieures des instances ne sont pas sensibles à la casse.
-
Ce paramètre est obligatoire si vous définissez Throttling Mode sur Throttle by SQL Template.
-
Pour les instructions SQL complexes, DAS transforme l'exemple SQL pour le traitement interne, mais le modèle SQL final reste inchangé. L'effet de limitation n'est pas affecté par cette transformation.
Par exemple, si vous saisissez
select name from das where name = "das" and age = 21 limit 20,il est modélisé sous la forme
select name from das where name = ? and age = ? limit ?puis réécrit en
select name from das where name = "param0" and age = "param1" limit 20. -
Vous ne pouvez limiter les instructions
INSERTque sur les moteurs de base de données suivants :-
ApsaraDB RDS for MySQL 8,0
-
PolarDB for MySQL 5,7 et 8,0
-
PolarDB-X 2,0
-
-
Vous ne pouvez pas limiter les instructions
INSERT...SELECT.... -
Ce paramètre est obligatoire si vous définissez Throttling Mode sur Throttle by Keyword.
-
Si vous spécifiez plusieurs mots-clés, la règle de limitation ne se déclenche que si une instruction SQL contient tous les mots-clés spécifiés. Séparez les différents mots-clés par des tildes (~). L'ordre des mots-clés n'a pas d'importance.
Par exemple, si l'instruction d'origine est
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,les mots-clés de limitation correspondants sont
SELECT~min~id~max~id~FROM~task_event~WHERE~gmt_modified~AND~begin_time~AND~source~IN~AND~id~AND~id. -
Vous ne pouvez pas spécifier uniquement SELECT, INSERT, UPDATE ou DELETE comme mots-clés de limitation. Les mots-clés sont sensibles à la casse. Toutefois, certaines versions antérieures des instances ne sont pas sensibles à la casse.
-
Cliquez sur Submit.
Une fois la règle de limitation SQL créée, vous pouvez consulter ses détails dans l'onglet Running. Le tableau suivant décrit les paramètres.
RemarqueLes paramètres de la liste varient légèrement selon le moteur de base de données et le mode de limitation.
Paramètre
Description
Throttling Mode
Le mode que vous avez sélectionné.
Throttling Rule
-
Throttle by Keyword : les mots-clés de limitation configurés.
-
Throttle by SQL Template : l'ID de modèle correspondant à l'exemple SQL.
-
Throttle by Execution Duration : le seuil de temps d'exécution configuré et le nombre de modèles SQL limités.
Maximum Concurrency
Le nombre maximal d'instructions SQL simultanées.
Maximum Waiting Queries
Le nombre maximal de requêtes en attente configuré dans la règle de limitation.
RemarqueCe paramètre est affiché pour les instances ApsaraDB RDS for PostgreSQL lorsque Throttling Mode est défini sur Throttle by SQL Template.
Throttling Duration (min)
La durée pendant laquelle la règle de limitation SQL est effective.
Start Time
L'heure à laquelle la règle de limitation a été configurée et est entrée en vigueur.
Remaining time
Le temps restant avant l'expiration de la règle de limitation.
SQL Sample
Un exemple d'instruction SQL à limiter.
RemarqueCe paramètre est affiché si vous définissez Throttling Mode sur Throttle by SQL Template.
Throttling Template ID
L'ID de modèle correspondant à l'exemple SQL.
RemarqueCe paramètre est affiché si vous définissez Throttling Mode sur Throttle by SQL Template.
Status
Indique que la règle est active.
Database
La base de données dans laquelle les instructions SQL seront limitées.
RemarqueCe paramètre est affiché si vous définissez Throttling Mode sur Throttle by SQL Template.
Search Path
Le chemin de recherche correspondant à l'instruction SQL limitée.
RemarqueCe paramètre est affiché pour les instances ApsaraDB RDS for PostgreSQL lorsque Throttling Mode est défini sur Throttle by SQL Template.
Matched SQL Query
Le nombre de requêtes SQL correspondant à la règle de limitation.
RemarqueCe paramètre est affiché si vous définissez Throttling Mode sur Throttle by SQL Template.
Waiting SQL Query
Le nombre de requêtes SQL en attente en raison de la règle de limitation.
RemarqueCe paramètre est affiché si vous définissez Throttling Mode sur Throttle by SQL Template.
Actions
Permet de Disable ou Modify la règle.
-
RDS for MySQL
|
Paramètre |
Description |
|
Throttling Mode |
Sélectionnez un mode de limitation selon vos besoins. |
|
SQL Type |
Le type de l'instruction SQL. Valeurs valides : SELECT, UPDATE, DELETE et INSERT. Remarque
|
|
Database |
La base de données dans laquelle les instructions SQL seront limitées. Remarque
Ce paramètre est obligatoire si vous définissez Throttling Mode sur Throttle by SQL Template. |
|
Maximum Concurrency |
Le nombre maximal d'instructions SQL simultanées. La valeur minimale est 0. Remarque
La limitation commence lorsque le nombre d'instructions SQL simultanées correspondant à la règle atteint cette valeur. |
|
Throttling Duration |
La durée pendant laquelle la règle de limitation SQL est effective. Important
La limitation SQL est une mesure d'urgence. Nous vous recommandons de définir la durée en fonction de vos besoins métier et de désactiver la règle lorsqu'elle n'est plus nécessaire. |
|
SQL Keywords |
Les mots-clés présents dans les instructions SQL à limiter. Remarque
|
|
SQL Sample |
Un exemple d'instruction SQL à limiter. Remarque
|
RDS for PostgreSQL
|
Paramètre |
Description |
|
Throttling Mode |
ApsaraDB RDS for PostgreSQL prend uniquement en charge la fonction Throttle by SQL Template. |
|
Database |
La base de données dans laquelle les instructions SQL seront limitées. |
|
Search Path |
Le chemin de recherche pour la limitation SQL. Remarque
Séparez les différents chemins par des virgules ( |
|
Maximum Concurrency |
Le nombre maximal d'instructions SQL simultanées. La valeur minimale est 0. Remarque
La limitation commence lorsque le nombre d'instructions SQL simultanées correspondant à la règle atteint cette valeur. |
|
Maximum Waiting Queries |
Le nombre maximal de requêtes en attente. |
|
Throttling Duration |
La durée pendant laquelle la règle de limitation SQL est effective. Important
La limitation SQL est une mesure d'urgence. Nous vous recommandons de définir la durée en fonction de vos besoins métier et de désactiver la règle lorsqu'elle n'est plus nécessaire. |
|
SQL Sample |
Un exemple d'instruction SQL à limiter. Remarque
|
PolarDB for MySQL
|
Paramètre |
Description |
|
Throttling Mode |
Sélectionnez un mode de limitation selon vos besoins. |
|
SQL Type |
Le type de l'instruction SQL. Valeurs valides : Remarque
|
|
Maximum Concurrency |
Le nombre maximal d'instructions SQL simultanées. La valeur minimale est 0. Remarque
La limitation commence lorsque le nombre d'instructions SQL simultanées correspondant à la règle atteint cette valeur. |
|
Database |
La base de données dans laquelle les instructions SQL seront limitées. Remarque
Ce paramètre est obligatoire si vous définissez Throttling Mode sur Throttle by SQL Template. |
|
Throttling Duration |
La durée pendant laquelle la règle de limitation SQL est effective. Important
La limitation SQL est une mesure d'urgence. Nous vous recommandons de définir la durée en fonction de vos besoins métier et de désactiver la règle lorsqu'elle n'est plus nécessaire. |
|
SQL Keywords |
Les mots-clés présents dans les instructions SQL à limiter. Remarque
|
|
SQL Sample |
Un exemple d'instruction SQL à limiter. Remarque
|
PolarDB-X 2,0
|
Paramètre |
Description |
|
Throttling Mode |
Sélectionnez un mode de limitation selon vos besoins. |
|
SQL Type |
Le type de l'instruction SQL. Valeurs valides : Remarque
|
|
Maximum Concurrency |
Le nombre maximal d'instructions SQL simultanées. La valeur minimale est 0. Remarque
La limitation commence lorsque le nombre d'instructions SQL simultanées correspondant à la règle atteint cette valeur. |
|
Throttling Duration |
La durée pendant laquelle la règle de limitation SQL est effective. Important
La limitation SQL est une mesure d'urgence. Nous vous recommandons de définir la durée en fonction de vos besoins métier et de désactiver la règle lorsqu'elle n'est plus nécessaire. |
|
SQL Keywords |
Les mots-clés présents dans les instructions SQL à limiter. Remarque
|
|
SQL Template ID |
L'ID du modèle SQL à limiter. Un ID est une chaîne hexadécimale de 8 caractères. Séparez les différents ID de modèles SQL par des virgules ( Remarque
Ce paramètre est obligatoire pour les instances PolarDB-X Throttling Mode lorsque le mode de limitation est défini sur Throttle by SQL Template. |
|
Minimum SQL Execution Duration |
Le seuil de temps d'exécution SQL. Si le temps d'exécution d'une instruction SQL dépasse le seuil spécifié, le système ajoute l'ID du modèle de l'instruction SQL à la règle de limitation. Remarque
Ce paramètre est obligatoire pour les instances PolarDB-X Throttling Mode lorsque le mode de limitation est défini sur Throttle by Execution Duration. |
|
Maximum Number of Throttled Queries |
Le nombre maximal d'ID de modèles SQL pouvant être limités en fonction du temps d'exécution. Une fois cette limite atteinte, le système ne crée plus de règles de limitation pour les autres instructions SQL dont le temps d'exécution dépasse le seuil spécifié. Remarque
Ce paramètre est obligatoire pour les instances PolarDB-X Throttling Mode lorsque le mode de limitation est défini sur Throttle by Execution Duration. |
|
Database Account with Throttled Queries |
Le compte de base de données associé à l'instruction SQL limitée. Remarque
Ce paramètre est obligatoire si vous définissez Throttling Mode sur Throttle by Keyword ou Throttle by SQL Template. |
MongoDB
|
Paramètre |
Description |
|
Type d'opération |
Sélectionnez les types d'opérations à limiter. Vous pouvez sélectionner plusieurs types. Valeurs valides : |
|
Concurrence des opérations |
Spécifiez le nombre maximal d'opérations simultanées autorisées pour les types d'opérations sélectionnés. Les requêtes dépassant ce seuil sont limitées. |
|
Durée de limitation |
Définissez la durée d'activité de la règle de limitation. Une fois la règle expirée, le système la désactive automatiquement et la déplace vers l'onglet Ended. |
|
Kill Statement |
(Facultatif) Si vous activez cette option, lorsque la règle de limitation prend effet, le système termine automatiquement (kill) toutes les opérations actives correspondant à la règle, telles que les opérations |
|
Étendue de limitation |
Cette option est disponible uniquement pour les instances de cluster fragmenté ApsaraDB for MongoDB. Vous pouvez appliquer la règle à All Shards ou à Partial Shards. |
|
Collections limitées |
Spécifiez les collections auxquelles la règle s'applique. Utilisez le format |
Database Autonomy Service (DAS) propose la fonctionnalité de limitation SQL pour contrôler le volume des demandes d'accès à la base de données et la concurrence SQL afin de garantir la disponibilité des services.
Prérequis
Les moteurs de base de données pris en charge sont les suivants :
ApsaraDB RDS for MySQL 5,6, 5,7 et 8,0.
-
ApsaraDB RDS for PostgreSQL 13 et versions ultérieures.
RemarquePour PostgreSQL 13, la version mineure du moteur doit être 20250430 ou ultérieure.
Pour PostgreSQL 14 ou 15, la version mineure du moteur doit être 20230330 ou ultérieure.
Pour les versions PostgreSQL supérieures à 15, toute version mineure du moteur est prise en charge.
PolarDB for MySQL 5,6, 5,7 et 8,0.
PolarDB-X 2,0.
MongoDB.
Messages d'erreur de limitation
Après avoir créé une règle de limitation SQL, le système de base de données renvoie un message d'erreur spécifique si une application exécute une instruction SQL correspondant aux mots-clés ou au modèle de la règle.
|
Concurrence maximale |
Version de l'instance |
Code d'erreur |
Message d'erreur |
|
0 ou un entier positif |
|
1317 |
|
|
MongoDB |
56900 |
|
|
|
Entier positif |
ApsaraDB RDS for MySQL 5.7 (version mineure du moteur 20200630 ou ultérieure) |
5041 |
Remarque
La concurrence maximale est un entier positif et les requêtes SQL associées restent dans l'état |
|
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 (version mineure du moteur 20200630 ou ultérieure) |
5042 |
Remarque
Si la concurrence maximale est 0, une erreur est renvoyée immédiatement. |
|
ApsaraDB RDS for MySQL 8,0 |
7535 |
||
|
PolarDB for MySQL 5,7 |
3278 |
||
|
PolarDB for MySQL 8,0 |
7534 |
Lorsque DAS effectue une limitation SQL, si le paramètre
ccl_max_waiting_countest défini sur 0, DAS utilise sa valeur par défaut de 10. Si le paramètre est défini sur une valeur supérieure à 0, DAS utilise la valeur spécifiée.Pour les instances ApsaraDB RDS for MySQL 5.7 (avec une version mineure 20200630 ou ultérieure) et ApsaraDB RDS for MySQL 8,0, si le paramètre
ccl_wait_timeoutest défini (et pris en charge par la version de l'instance), les instructions SQL dans l'étatConcurrency control waitingcontinuent de s'exécuter et ne sont plus limitées une fois cette limite dépassée.-
Pour les instances PolarDB for MySQL 8,0, vous pouvez définir le paramètre
ccl_modepour contrôler le comportement des instructions SQL lorsque la limite de concurrence est dépassée. Ce paramètre est disponible uniquement sur les versions d'instances prises en charge.WAIT (par défaut) : l'instruction attend dans une file d'attente.
REFUSE : l'instruction n'attend pas et une erreur est renvoyée immédiatement.
Scénarios
|
Scénario |
Description |
|
Augmentation soudaine de la concurrence SQL |
Une pénétration du cache ou des appels anormaux peuvent provoquer une augmentation soudaine de la concurrence SQL. |
|
Requêtes SQL avec skew de données |
L'interrogation fréquente de données populaires lors d'une promotion commerciale peut surcharger le système. |
|
Absence d'index |
Un volume élevé d'appels SQL sur une table non indexée peut surcharger le système. |
Modes de limitation
|
Mode |
Description |
Bases de données prises en charge |
|
Keyword throttling |
Limite les instructions SQL contenant des mots-clés spécifiés. Remarque
Vous ne pouvez pas utiliser ce mode pour limiter une instruction SQL spécifique. |
|
|
Throttle by SQL Template |
Saisissez un exemple SQL. Le système le traite en un modèle SQL, puis limite toutes les instructions SQL correspondantes. |
|
|
Limite les instructions SQL en faisant correspondre les ID de modèles SQL. Vous pouvez obtenir les ID de modèles SQL à partir des journaux SQL, des sessions et des résultats d'exécution EXPLAIN. Remarque
Un ID de modèle SQL est une chaîne hexadécimale de 8 caractères. |
PolarDB-X 2,0 Enterprise Edition |
|
|
Throttle by Execution Duration |
Si le temps d'exécution d'une instruction SQL dépasse le seuil spécifié, son ID de modèle SQL est automatiquement ajouté à la règle de limitation. Les instructions suivantes correspondant à cet ID sont ensuite exécutées selon la concurrence spécifiée par la règle. Remarque
Vous pouvez également définir une limite sur le nombre d'ID de modèles SQL limités. Une fois la limite atteinte, aucune autre règle de limitation n'est créée pour les autres instructions SQL. |
PolarDB-X 2,0 Enterprise Edition |
|
Operation Type Throttling |
Contrôle la concurrence des opérations find, insert, update et delete sur une collection spécifiée. |
MongoDB
|
Rubriques connexes
API connexes
|
API |
Description |
|
Active la limitation SQL. |
|
|
Désactive une règle de limitation spécifiée. |
|
|
Désactive toutes les règles de limitation en cours d'exécution. |
|
|
Renvoie les règles de limitation en cours d'exécution. |
|
|
Renvoie les règles de limitation en cours d'exécution ou qui ont été déclenchées. |
|
|
Génère des mots-clés de limitation à partir d'une instruction SQL. |