Database Autonomy Service (DAS) détecte automatiquement les instructions SQL problématiques lors des pics de trafic et applique une limitation par mot-clé, sans intervention manuelle. Cette fonctionnalité protège votre instance ApsaraDB RDS contre la dégradation des performances causée par des pics soudains de concurrence, des requêtes non indexées ou des modèles de requêtes abusifs.
Versions prises en charge
La limitation automatique du SQL est disponible pour les instances ApsaraDB RDS exécutant les versions et éditions MySQL suivantes :
| Version MySQL | Éditions prises en charge |
|---|---|
| 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 |
Cas d'utilisation
La limitation automatique du SQL est conçue pour les scénarios suivants :
Pics de trafic : Une pénétration du cache ou des requêtes suspectes provoquent une augmentation soudaine des requêtes SQL concurrentes d'un type spécifique.
Requêtes intensives d'un seul utilisateur : Un utilisateur soumet un grand nombre de requêtes SQL sur une courte période — par exemple, un acheteur passant plusieurs commandes simultanément — ce qui consomme une part disproportionnée des ressources de la base de données.
Absence d'index : L'exécution d'un grand nombre d'instructions SQL non indexées dégrade les performances des autres charges de travail.
Limites
Le mode de limitation est Throttled by Keywords.
Types SQL pris en charge : SELECT, UPDATE, DELETE et INSERT
Les instructions INSERT...SELECT... ne peuvent pas faire l'objet d'une limitation.
La limitation INSERT n'est prise en charge que sur les instances ApsaraDB RDS exécutant MySQL 8,0 et les clusters PolarDB for MySQL exécutant MySQL 5,7 ou 8,0.
Fonctionnement
Lorsque la limitation automatique du SQL est déclenchée, le comportement dépend de la version MySQL exécutée sur votre instance ApsaraDB RDS.
MySQL 5,6 ou MySQL 5,7
Les instructions SQL limitées sont interrompues et l'erreur suivante est renvoyée au client :
1317: "query execution was interrupted"
MySQL 8,0
Les instructions SQL limitées passent à l'état Concurrency control waiting. Si le nombre d'instructions en attente dépasse la valeur du paramètre ccl_max_waiting_count, l'erreur suivante est renvoyée :
ERROR 7534 (HY000): "Concurrency control waiting count exceed max waiting count"
Le paramètre ccl_max_waiting_count contrôle le nombre d'instructions limitées pouvant attendre avant qu'une erreur ne soit renvoyée :
**Valeur de ccl_max_waiting_count** |
Comportement |
|---|---|
0 (par défaut) |
Toutes les instructions limitées attendent indéfiniment ; aucune erreur n'est renvoyée. |
0 lorsque DAS active la limitation |
DAS modifie automatiquement la valeur en 10. |
Toute valeur > 0 |
DAS utilise la valeur spécifiée. |
Activer la limitation automatique du SQL
Accédez à la page Instances. Dans la barre de navigation supérieure, sélectionnez la région où réside votre instance ApsaraDB RDS. Recherchez l'instance et cliquez sur son ID.
-
Ouvrez le panneau Autonomous Function Management en utilisant l'un des chemins suivants :
Dans le volet de navigation de gauche, choisissez Autonomy Services > Diagnostics. Cliquez sur l'onglet Autonomy Center, puis cliquez sur Autonomy Service Settings.
Dans le volet de navigation de gauche, choisissez Autonomy Services > Dashboard. Sur l'onglet Performance Trends, cliquez sur Autonomy Service Settings.
-
Sur l'onglet Autonomous Function Settings, activez le service d'autonomie. Cliquez sur l'onglet Optimization and Throttling, sélectionnez Automatic Throttling et configurez les conditions de déclenchement de la limitation.
Lorsque les conditions sont remplies dans la fenêtre temporelle configurée, DAS commence à surveiller l'instance. Si le problème persiste après le début de la limitation, DAS annule automatiquement l'opération de limitation. La durée de la limitation ne dépasse jamais la valeur définie dans Maximum Throttling Duration .
Paramètre Description CPU Utilization > Seuil d'utilisation du CPU. Définissez une valeur ≥ 70. Par exemple, saisissez 80pour déclencher la limitation lorsque l'utilisation du CPU dépasse 80 %.Number of Active Sessions > Seuil du nombre de sessions actives. Définissez une valeur ≥ 16 lors de l'utilisation d'une relation OU avec CPU Utilization, ou ≥ 2 lors de l'utilisation d'une relation ET. Par exemple, saisissez 64pour déclencher la limitation lorsque le nombre de sessions actives dépasse 64.Available Time Range Plage horaire pendant laquelle la limitation automatique du SQL est active. Maximum Throttling Duration Durée maximale d'un événement de limitation unique. Si la valeur est définie sur 0, la limitation est déclenchée immédiatement mais devient invalide aussitôt.Duration > Durée pendant laquelle les conditions relatives au CPU et aux sessions doivent persister avant que la limitation ne se déclenche. Par exemple, saisissez 2minutes afin que la limitation ne s'active qu'après que les conditions sont restées valides pendant plus de 2 minutes.
Cliquez sur OK.
-
(Facultatif) Dans la section Alert Configuration, configurez un modèle d'alerte et abonnez-vous aux notifications afin d'être informé du démarrage ou de l'arrêt d'une tâche de limitation. Le système recommande un modèle d'alerte et préremplit les règles d'alerte pour les événements d'autonomie concernés. Suivez les instructions à l'écran pour terminer la configuration.
-
À l'étape Select Alert Contact Group, sélectionnez un groupe de contacts d'alerte. Pour plus d'informations, consultez Gérer les contacts d'alerte.
Cliquez sur Add Contact pour ajouter un nouveau contact d'alerte.
Cliquez sur Create Contact Group pour créer un nouveau groupe de contacts d'alerte.
Cliquez sur Edit ou Remove pour mettre à jour ou supprimer un contact existant.
À l'étape Associate with Resources, confirmez les ressources associées.
Cliquez sur Submit Configuration et confirmez dans la boîte de dialogue qui s'affiche.
Si votre instance ApsaraDB RDS dispose déjà d'un modèle d'alerte, ajoutez-y les règles d'alerte requises comme indiqué. Pour en créer un à partir de zéro, consultez Configurer les modèles d'alerte et Configurer les règles d'alerte .
-
Afficher l'historique de limitation
Accédez à la page Instances. Dans la barre de navigation supérieure, sélectionnez la région où réside votre instance ApsaraDB RDS. Recherchez l'instance et cliquez sur son ID.
Dans le volet de navigation de gauche, choisissez Autonomy Services > Diagnostics.
Cliquez sur l'onglet Session Management.
-
Dans la section Instance Sessions, cliquez sur SQL Throttling. Dans la boîte de dialogue, consultez les tâches de limitation par statut :
Onglet Description Running Règles de limitation actuellement en vigueur. La tâche reste dans cet état jusqu'à l'expiration de la valeur Maximum Throttling Duration ou jusqu'à ce que DAS annule automatiquement l'opération. Complete Tâches de limitation terminées. Sélectionnez une plage horaire pour filtrer l'historique. 

Si vous avez sélectionné Kill Abnormal SQL Statements in Execution lors de la configuration de la limitation, cliquez sur End Session History pour afficher les sessions qui ont été terminées.
Étapes suivantes
Pour optimiser les instructions SQL et réduire la consommation de ressources plutôt que d'appliquer une limitation, consultez Optimisation SQL automatique et Optimisation SQL.
Si les métriques de l'instance n'atteignent pas le seuil nécessaire pour déclencher la limitation automatique, configurez plutôt une règle de limitation manuelle. Consultez Limitation SQL.
Référence API
| Opération | Description |
|---|---|
| UpdateAutoThrottleRulesAsync | Configure de manière asynchrone les paramètres de limitation automatique du SQL pour plusieurs instances de base de données à la fois. |
| GetAutoThrottleRules | Interroge les règles de limitation automatique du SQL des instances de base de données. |
| DisableAutoThrottleRules | Désactive la fonctionnalité de limitation automatique du SQL pour plusieurs instances de base de données à la fois. |