Database Autonomy Service (DAS) analyse les données hors ligne pour examiner et étiqueter automatiquement les requêtes SQL lentes de toutes vos instances de la veille, chaque jour à 01:00. DAS classe automatiquement les requêtes SQL lentes, établit les priorités d'optimisation et fournit des suggestions de gouvernance ainsi que des options d'exportation des données.
Prérequis
-
Votre instance de base de données doit être l'une des suivantes :
ApsaraDB RDS for MySQL
PolarDB for MySQL
MyBase MySQL
ApsaraDB RDS for PostgreSQL
-
Cette fonctionnalité prend en charge les instances de base de données situées dans les régions de Chine continentale, de Chine (Hong Kong) et de Singapour.
RemarqueDepuis le 1er avril 2023, la gouvernance des requêtes prend également en charge les instances de base de données dans les régions de Chine (Hong Kong) et de Singapour.
Le service O&M est activé.
Tutoriel vidéo
Limites
La gouvernance des requêtes repose sur une analyse hors ligne T+1. Si vous étiquetez une requête SQL comme Optimization Not Required, la variation du nombre de requêtes Optimizable SQL n'apparaîtra que le lendemain.
Les étiquettes SQL prédéfinies par DAS ne peuvent pas être désactivées.
Pour chaque instance de base de données, DAS analyse uniquement les 200 requêtes SQL lentes les plus fréquentes en nombre d'exécutions. Par conséquent, le nombre maximum de Slow SQL Templates par instance est limité à 200.
Concepts clés
|
Terme |
Description |
|
Optimizable SQL |
Après exclusion des SQL statements that do not require optimization de l'ensemble des instructions SQL lentes, les instructions restantes constituent les Optimizable SQL. |
|
SQL Not Requiring Optimization |
Cette catégorie inclut les requêtes SQL automatiquement étiquetées par DAS comme Ignored ainsi que les requêtes manuellement étiquetées par les utilisateurs comme Optimization Not Required. |
|
Ignored |
DAS étiquette automatiquement certaines instructions SQL comme Optimization Not Required, notamment celles commençant par |
Procédure
Connectez-vous à la console DAS.
Dans le volet de navigation de gauche, sélectionnez Intelligent O&M Center > Query Governance.
-
Sur la page Query Governance, consultez les résultats de la gouvernance des requêtes.
Filtrez par plage horaire, région et moteur, ou saisissez un ID d'instance pour afficher les résultats d'une instance spécifique.
-
Query Governance Overview : Consultez les résultats après l'étiquetage et la classification des modèles SQL par le système.
RemarqueDAS ne comptabilise les Failed SQL Executions que sur les instances pour lesquelles l'édition Enterprise Edition de DAS est activée.
Query Governance Trend : Visualisez l'évolution des résultats de la gouvernance des requêtes sur la plage horaire sélectionnée.
-
Top Rankings : Consultez les listes des Best-performing Instances et des Worst-performing Instances.
Worst-performing Instances : Classe les instances par ordre décroissant du nombre d'exécutions de requêtes lentes afin d'identifier les instances les plus problématiques.
Best-performing Instances : Classe les instances par ordre croissant selon la variation du nombre d'exécutions de requêtes lentes. Une valeur négative indique une réduction des exécutions de requêtes lentes (bonne optimisation), tandis qu'une valeur positive indique une augmentation.
DAS recommande de se concentrer sur les classements relatifs aux Optimizable SQL.
-
SQL to Be Optimized : Définissez des filtres pour identifier les instructions SQL nécessitant une gouvernance.
RemarqueCes filtres sont combinés selon une logique ET.
Séparez plusieurs noms de bases de données par des virgules (,) pour les combiner selon une logique OU.
Séparez plusieurs mots-clés SQL par des espaces pour les combiner selon une logique ET.
Séparez plusieurs noms d'utilisateurs de base de données par des virgules (,) pour les combiner selon une logique OU.
La sélection de plusieurs étiquettes de règles les combine selon une logique OU.
Dans la colonne Actions d'un échantillon SQL cible, cliquez sur Suggestions pour afficher les suggestions de gouvernance détaillées.
-
Dans la colonne Actions d'un échantillon SQL cible, cliquez sur Add Tag pour étiqueter manuellement l'instruction SQL. Pour plus d'informations sur les étiquettes, consultez la section Étiquetage manuel.
Vous pouvez également sélectionner et étiqueter plusieurs instructions SQL simultanément.
Dans la colonne Actions d'un échantillon SQL cible, cliquez sur Samples pour afficher les détails de l'échantillon de journal de requêtes lentes correspondant à l'instruction SQL.
Dans la colonne Actions d'un échantillon SQL cible, cliquez sur Trend pour afficher les détails de l'analyse du journal de requêtes lentes pour l'instruction SQL. Pour plus d'informations sur l'analyse des journaux de requêtes lentes, consultez la section Journaux de requêtes lentes.
Exportez et partagez les données des instructions SQL optimisables selon vos besoins. Pour plus d'informations, consultez les bonnes pratiques.
-
Failed SQL : Définissez des filtres pour identifier les instructions SQL que vous souhaitez consulter.
RemarqueDAS ne comptabilise les Failed SQL que sur les instances pour lesquelles l'édition Enterprise Edition de DAS est activée.
-
Vous pouvez filtrer par nom de base de données et par mot-clé SQL. Ces deux filtres sont combinés selon une logique ET.
Plusieurs noms de bases de données sont séparés par des virgules (,) et combinés selon une logique OU.
Plusieurs mots-clés SQL sont séparés par des espaces et combinés selon une logique ET.
Dans la colonne Actions d'un échantillon SQL cible, cliquez sur Samples pour afficher les détails de l'échantillon correspondant à l'instruction SQL.
-
Bonnes pratiques
-
Utilisez les étiquettes pour déterminer s'il convient d'optimiser les requêtes SQL :
La gouvernance classe les instructions de la liste Overall Slow SQL en deux catégories : Optimization Not Required et Optimizable SQL. Utilisez les étiquettes SQL suivantes pour filtrer et hiérarchiser ces instructions.
ID
Nom de l'étiquette
Niveau
Recommandation
Description
NEW_SQL
Nouvelle requête SQL lente
Critique
✔️
Une requête SQL lente qui n'est pas apparue au cours des sept derniers jours.
DAS_IGNORE
Ignorée par DAS
Avis
➖
DAS étiquette automatiquement la requête comme ne nécessitant pas d'optimisation. Cela concerne par exemple les instructions SQL commençant par
show,create,xa,commit,rollback,select sleepouexplain.FUZZY_LIKE
Requête LIKE floue
Avis
➖
Une clause
likeest utilisée pour la correspondance floue, ce qui empêche l'utilisation d'un index.HAS_EXPR
Contient une expression
Avis
➖
La requête contient une expression. La colonne impliquée dans le calcul ne peut pas utiliser d'index.
LARGE_IN_LIST
Grande liste IN
Avis
➖
La clause
INcontient plus de 200 éléments, ce qui est probablement généré par un programme. Les indexes ne peuvent pas être utilisés sur les colonnes concernées.SELECT_STAR
Sélection de toutes les colonnes
Avis
➖
Lorsque vous utilisez
SELECT, spécifiez uniquement les champs requis afin d'éviter les problèmes de performance et le gaspillage de ressources liés au renvoi de colonnes inutiles.INDEX_ADVISOR
Suggestion d'index
Avis
✔️
Une suggestion de création d'index pour accélérer l'exécution SQL.
COMPLEX_JOIN
JOIN complexe
Avis
➖
Évitez de faire un
joinsur plus de trois tables. Les champs utilisés pour la jointure doivent avoir des types de données identiques. Pour les jointures multi-tables, assurez-vous que les champs de jointure sont indexés.CROSS_DB
Requête inter-bases de données
Avis
➖
Lors de la migration de bases de données et de tables entre instances, les requêtes inter-bases de données peuvent devenir indisponibles.
SUBQUERY
Contient une sous-requête
Avis
➖
La requête contient une sous-requête. Envisagez de la réécrire avec un
JOINpour de meilleures performances.DEEP_PAGING
Pagination profonde
Critique
➖
La requête utilise une clause
LIMITpour la pagination profonde. Il est recommandé de réécrire la requête avec une jointure.WITHOUT_PREDICATE
Absence de prédicat
Critique
✔️
L'instruction ne contient aucun prédicat. Vérifiez si elle implique un balayage complet de la table.
NULL_COMPARE
Erreur de comparaison NULL
Critique
➖
Utilisez
IS NULLouIS NOT NULLpour vérifier la présence d'une valeurNULL, car une comparaison directe entre une valeur et NULL renvoie toujours NULL.COUNT_NOT_STAR
Syntaxe COUNT incorrecte
Critique
➖
Utilisez
COUNT()plutôt quecount(nom_colonne) oucount(constante).count()est la syntaxe standard pour le comptage des lignes telle que définie dans SQL92. Elle est indépendante de la base de données et n'est pas affectée par les valeursNULLou non-NULL.count(nom_colonne) ne compte pas les lignes où la colonne a une valeurNULL.LARGE_ROWS_EXAMINED
Nombre excessif de lignes analysées
Avis
➖
La requête analyse en moyenne plus de 50 000 lignes. Un balayage excessif consomme davantage de ressources, ce qui ralentit la requête et peut impacter les performances globales de la base de données.
RemarqueEnvisagez d'utiliser des conditions de filtre plus sélectives.
LARGE_ROWS_SENT
Nombre excessif de lignes renvoyées
Avis
➖
La requête renvoie en moyenne plus de 5 000 lignes. Envisagez de réduire le nombre de lignes renvoyées.
NO_ADVICE
Aucune suggestion
Avis
➖
Aucune suggestion d'analyse n'est disponible.
PERIOD_SQL
SQL périodique
Avis
➖
Exécutée à une heure fixe chaque jour.
Concentrez-vous sur les Optimizable SQL. Utilisez les étiquettes ci-dessous pour marquer les instructions SQL comme Optimization Not Required et réduire le nombre d'instructions Optimizable SQL. Les étiquettes suivantes prennent en charge l'étiquetage manuel.
ID
Nom de l'étiquette
Niveau
Description
USER_IGNORE
Pas besoin d'optimisation
Avis
Après l'ajout de cette étiquette, DAS exclut la requête des statistiques Optimizable SQL du lendemain.
DAS_IMPORTANT
SQL important
Avis
Marque la requête SQL comme importante.
DAS_NOT_IMPORTANT
SQL non important
Avis
Marque la requête SQL comme non importante.
DAS_IN_PLAN
Optimisation planifiée
Avis
Marque la requête SQL comme prévue pour optimisation.
-
Exportez les données :
-
Cliquez sur Create Export Task pour télécharger toutes les données actuellement affichées dans l'onglet SQL Details.
RemarqueLes données exportées restent disponibles en téléchargement pendant trois jours.
Créez des tâches de téléchargement avec différents critères de filtrage, tels que des instances ou des règles, et attribuez-les à différents responsables pour optimisation.
Sinon, sélectionnez plusieurs enregistrements SQL pour exporter uniquement ces éléments.
-
-
Partagez les données :
Partagez les requêtes SQL lentes filtrées avec les membres de votre équipe de deux manières :
Sélectionnez plusieurs enregistrements SQL et cliquez sur Batch Sharing. Le système génère un lien court. Lorsque les utilisateurs disposant des autorisations d'accès à la console DAS cliquent sur ce lien, ils ne voient que les enregistrements SQL que vous avez sélectionnés.
Sinon, cliquez sur Share (à côté de Export) pour générer une URL qui capture votre vue actuelle, y compris tous les filtres. Les utilisateurs disposant des autorisations de la console DAS peuvent ouvrir l'URL pour voir les mêmes données sans reconfigurer les filtres.
Référence API
|
API |
Description |
|
Ajoute une étiquette à une requête SQL cible. |
|
|
Récupère les données de modèle pour les exécutions SQL ayant échoué. |
|
|
Récupère les données d'échantillon pour les exécutions SQL ayant échoué. |
|
|
Récupère les suggestions de gouvernance pour une requête. |
|
|
Récupère la liste des règles de gouvernance des requêtes. |
|
|
Récupère les données de tendance pour la gouvernance des requêtes. |
|
|
Récupère les données pour les listes des instances les plus performantes et les moins performantes. |
|
|
Récupère les données de modèle pour la gouvernance des requêtes. |
|
|
Récupère les étiquettes d'une requête SQL spécifiée. |
|
|
Récupère l'URL partageable pour les résultats de la gouvernance des requêtes. |