Le diagnostic du stockage vous aide à identifier les déséquilibres de données, les clés de partition sous-optimales, les index excessifs et d'autres problèmes de configuration de table dans votre cluster AnalyticDB for MySQL. Sur la page Storage Diagnostics, vous pouvez évaluer l'adéquation des clés de partition, des clés de distribution et des tables répliquées. Vous pouvez également identifier les opportunités de séparation des données chaudes et froides et recevoir des suggestions d'optimisation des index. En appliquant ces recommandations, vous optimisez le schéma de votre base de données, réduisez les coûts du cluster et améliorez l'efficacité.
Remarques importantes
L'optimisation des tables chaudes et froides ainsi que le diagnostic des index sont pris en charge uniquement sur les clusters exécutant Milvus version 3.1.4 ou ultérieure.
Les suggestions d'optimisation pour la séparation des données chaudes et froides et le diagnostic des index reposent sur une analyse historique des données et des modèles de requêtes. Ces suggestions restent pertinentes tant que les données et les modèles de requêtes demeurent stables. Si ces modèles évoluent de manière significative, l'efficacité des suggestions diminue. Avant d'utiliser cette fonctionnalité, évaluez s'il convient d'appliquer les suggestions en fonction de votre charge de travail actuelle.
Diagnostic des tables
Diagnostic du déséquilibre des données
Lorsque vous créez une table, utilisez DISTRIBUTED BY HASH pour spécifier une clé de distribution. Après avoir défini la clé de distribution, AnalyticDB for MySQL calcule un hachage des valeurs de la clé de distribution et répartit les lignes sur différents shards. Une distribution inégale des données entre les nœuds de stockage entraîne un déséquilibre de l'espace disque, ce qui peut remplir prématurément les disques et bloquer les écritures de données.
Critères de diagnostic
AnalyticDB for MySQL diagnostique le déséquilibre des données pour les tables contenant plus de 10 000 lignes. La méthode de calcul est la suivante :
Excluez le shard le plus volumineux et calculez la taille moyenne des shards.
Si un shard est supérieur à
average shard size × thresholdou inférieur àaverage shard size / threshold, la table est considérée comme déséquilibrée. Le seuil par défaut est 3 et la plage valide est [0, 10000000000]. Vous pouvez ajuster le seuil en exécutant la commande suivante :SET ADB_CONFIG RC_DATA_SKEW_THRESHOLD=Value;.
Procédure
Connectez-vous à la console AnalyticDB for MySQL. Dans le coin supérieur gauche de la console, sélectionnez une région. Dans le volet de navigation de gauche, cliquez sur Clusters. Recherchez le cluster à gérer et cliquez sur son ID.
Dans le volet de navigation de gauche, choisissez .
-
Cliquez sur l'onglet Table Diagnostics pour afficher les détails dans la section Table Skew Diagnostics.
Storage Node Disk Usage
Utilisez le graphique pour vérifier l'utilisation du disque sur les nœuds de stockage et identifier tout déséquilibre de l'espace disque. En cas de déséquilibre, optimisez les tables répertoriées sous Top 10 Skewed Tables. Même si l'espace disque semble équilibré mais que des tables apparaissent dans Top 10 Skewed Tables, optimisez-les afin d'éviter toute dégradation des performances des requêtes du cluster.
Top 10 Skewed Tables
Cette section répertorie les tables présentant un déséquilibre de données, triées par volume total de données décroissant. Pour afficher le nombre de lignes par shard et évaluer la gravité du déséquilibre, cliquez sur View Skew Details dans la colonne Actions.
Méthodes d'optimisation
Vous pouvez résoudre ce problème en utilisant l'une des méthodes suivantes :
-
Augmentez la capacité de stockage.
Pour les clusters Enterprise Edition, il est nécessaire de mettre à l'échelle les ressources réservées. Pour plus d'informations, consultez la rubrique Scale an Enterprise Edition cluster.
Pour les clusters Basic Edition, il est nécessaire de mettre à l'échelle les ressources de calcul. Pour plus d'informations, consultez la rubrique Scale a Basic Edition cluster.
Pour les clusters Data Lakehouse Edition, il est nécessaire de mettre à l'échelle les ressources de stockage réservées. Pour plus d'informations, consultez la rubrique Scale up or down the Data Lakehouse Edition.
Pour les clusters Data Warehouse Edition (elastic mode), il est nécessaire de mettre à l'échelle les unités d'E/S élastiques. Pour plus d'informations, consultez la rubrique Scale a Data Warehouse Edition (elastic mode) cluster.
Pour les clusters Data Warehouse Edition (reserved mode), il est nécessaire de mettre à l'échelle les groupes de nœuds. Pour plus d'informations, consultez la rubrique Scale a Data Warehouse Edition (reserved mode) cluster.
Supprimez les index ou partitions inutilisés pour réduire l'utilisation du stockage. Pour plus d'informations, consultez la section Diagnostic des index.
Recréez la table et migrez les données. Pour plus d'informations, consultez la rubrique CREATE TABLE.
Optimisation des tables chaudes et froides
AnalyticDB for MySQL analyse la fréquence d'accès aux tables pour identifier les tables rarement consultées et fournir des suggestions d'optimisation. Vous pouvez appliquer ces recommandations pour ajuster la politique de séparation des données chaudes et froides de vos tables. Pour plus d'informations sur la séparation des données chaudes et froides, consultez la rubrique Hot and cold data separation.
Critères de diagnostic
AnalyticDB for MySQL fournit des suggestions d'optimisation pour les tables qui n'ont pas été consultées au cours des 15 derniers jours et dont le taux d'accès est inférieur à 1 %.
Procédure
Connectez-vous à la console AnalyticDB for MySQL. Dans le coin supérieur gauche de la console, sélectionnez une région. Dans le volet de navigation de gauche, cliquez sur Clusters. Recherchez le cluster à gérer et cliquez sur son ID.
Dans le volet de navigation de gauche, choisissez .
Sous l'onglet Table Diagnostics, cliquez sur Hot and Cold Table Optimization.
Sous l'onglet Available Optimization Suggestions, cliquez sur Disable pour activer la fonctionnalité d'optimisation des tables chaudes et froides. Si cette fonctionnalité est déjà activée pour le cluster actuel, ignorez cette étape.
-
Cliquez sur les onglets Available Optimization Suggestions et Applied Optimization Suggestions pour consulter les suggestions disponibles et celles déjà appliquées.
Paramètre
Description
Suggestion ID
Identifiant de la suggestion d'optimisation.
SQL
Modifications de table et de définition requises par la suggestion.
Optimization Type
Optimisation des tables chaudes et froides.
Optimization Suggestion
Recommandation détaillée pour le type d'optimisation.
Expected Optimization Benefits
Bénéfice attendu après application de la suggestion.
RemarqueLes avantages attendus sont des estimations basées sur des statistiques historiques et non des valeurs précises en temps réel. Utilisez-les à titre indicatif uniquement.
Actions
Vous pouvez appliquer la suggestion actuelle en cliquant sur Apply.
Remarque-
Après avoir cliqué sur Apply, AnalyticDB for MySQL modifie la stratégie de stockage de la table en COLD. Pour la passer à MIXED ou HOT, exécutez manuellement une instruction ALTER. Pour plus de détails, consultez la section Stratégies de stockage.
-
Cliquez sur Apply pour adopter la suggestion d'optimisation. Après avoir cliqué sur Apply, le cluster correspondant exécute la modification SQL et la suggestion apparaît sous l'onglet Applied Optimization Suggestions.
-
Apply produit le même effet que l'exécution du code SQL dans un client. Cette action est irréversible. Utilisez-la avec précaution.
-
Une fois le code SQL envoyé, la table doit terminer une opération Build pour que la modification prenne effet. Le système de base de données déclenche automatiquement l'opération Build selon des règles internes. Jusqu'au déclenchement, le statut de la suggestion reste « en cours d'exécution ». Après le déclenchement, il passe à « terminé ».
-
Diagnostic des tables répliquées
Lorsque vous créez une table dans AnalyticDB for MySQL, vous pouvez spécifier une distribution par diffusion à l'aide de DISTRIBUTED BY BROADCAST. La table est alors créée en tant que table répliquée, qui stocke une copie identique de ses données sur chaque shard. Si votre charge de requêtes implique des jointures à haute concurrence entre des tables volumineuses et des tables de petite taille, telles que la jointure d'une grande table de faits avec une petite table de dimensions, vous pouvez créer la table la plus petite en tant que table répliquée. Cela permet de réduire la transmission de données sur le réseau interne du cluster et d'améliorer la concurrence des requêtes. Toutefois, les tables répliquées offrent de mauvaises performances en écriture et consomment beaucoup d'espace de stockage, ce qui peut nuire aux performances globales en écriture du cluster AnalyticDB for MySQL.
Critères de diagnostic
Une table répliquée est considérée comme inefficace si elle contient plus de 20 000 lignes.
Procédure
Connectez-vous à la console AnalyticDB for MySQL. Dans le coin supérieur gauche de la console, sélectionnez une région. Dans le volet de navigation de gauche, cliquez sur Clusters. Recherchez le cluster à gérer et cliquez sur son ID.
Dans le volet de navigation de gauche, choisissez .
Sous l'onglet Table Diagnostics, cliquez sur Replicated Table Diagnostics.
Méthodes d'optimisation
Créez une table standard et migrez les données. Pour plus d'informations, consultez la rubrique CREATE TABLE.
Diagnostic des partitions
Diagnostic des tables partitionnées
Si vous ne définissez pas correctement le champ de partition lors de la création d'une table partitionnée, les problèmes suivants peuvent survenir :
Des partitions trop volumineuses, telles que des partitions annuelles où toutes les données d'une année résident dans une seule partition, entraînent un nombre réduit de partitions contenant des volumes de données massifs. L'exécution d'une tâche Build sur une telle partition consomme des ressources excessives, notamment le processeur du nœud de stockage et les E/S disque, ce qui affecte la stabilité du cluster.
Des partitions trop petites, telles que des partitions horaires où les données de chaque heure résident dans une seule partition, génèrent de nombreuses partitions contenant peu de données. Le cluster doit mettre en cache d'importantes métadonnées de partition, ce qui consomme une quantité significative de mémoire. Les requêtes doivent également analyser de nombreuses partitions, ce qui dégrade les performances des requêtes.
Quelle est la taille de partition raisonnable ?
La taille de la partition est mesurée par le nombre de lignes1 et évolue proportionnellement au nombre de shards2. Si un cluster comporte N shards, une taille de partition raisonnable correspond à un nombre de lignes compris entre [1 million × N] et [5 millions × N].
Par exemple, si un cluster dispose de 64 shards, un nombre de lignes raisonnable par partition varie de 64 millions à 320 millions.
1Pour interroger le nombre de lignes par partition, exécutez la commande suivante :
SELECT partition_id, row_count FROM information_schema.kepler_partitions WHERE schema_name = '$DB' AND table_name ='$TABLE' AND partition_id > 0;2Pour interroger le nombre de shards, exécutez la commande suivante :
SELECT COUNT(1) FROM information_schema.kepler_meta_shards;
Diagnostiquer la pertinence du champ de partition
Critères de diagnostic
Un champ de partition est considéré comme inapproprié si 10 % ou plus des partitions d'une table ont une taille inappropriée.
Par exemple, si une table compte 100 partitions et que 10 d'entre elles ou plus ont une taille inappropriée, le champ de partition est signalé comme inapproprié.
Procédure
Connectez-vous à la console AnalyticDB for MySQL. Dans le coin supérieur gauche de la console, sélectionnez une région. Dans le volet de navigation de gauche, cliquez sur Clusters. Recherchez le cluster que vous souhaitez gérer et cliquez sur son ID.
Dans le volet de navigation de gauche, choisissez .
Cliquez sur l'onglet Partition Diagnostics pour afficher les tables partitionnées inappropriées et leurs noms de partition spécifiques dans la section Partitioned Table Diagnostics.
Comment ajuster la taille des partitions dans la plage raisonnable
Si l'outil de diagnostic des partitions identifie des partitions inappropriées, vous pouvez utiliser les méthodes suivantes pour les ajuster.
Si le nombre de lignes d'une partition est inférieur à la limite inférieure de la plage raisonnable, la partition est trop petite. Dans ce cas, vous pouvez augmenter la granularité de la partition. Par exemple, si un cluster dispose de 64 shards, la plage raisonnable s'étend de 64 millions à 320 millions de lignes. Si une partition contient moins de 64 millions de lignes, vous pouvez modifier le partitionnement de quotidien à mensuel.
-
Si le nombre de lignes d'une partition dépasse la limite supérieure recommandée, la partition est considérée comme trop grande et vous devez réduire sa granularité. Par exemple, si vous disposez de 64 shards, le nombre recommandé de lignes par partition se situe entre 64 millions et 320 millions. Si une partition contient plus de 320 millions de lignes, nous vous recommandons de modifier le partitionnement de mensuel à quotidien.
Pour plus d'informations sur la modification de la granularité des partitions, consultez la rubrique Modifier le format de la fonction de partition.
Si le nombre total de lignes d'une table est inférieur à la limite inférieure de la plage raisonnable et qu'il n'est pas prévu d'atteindre cette plage, vous pouvez créer une table non partitionnée et migrer les données depuis la table partitionnée.
Diagnostic des tables non partitionnées
Si vous omettez la clause PARTITION BY lors de la création d'une table, celle-ci est créée en tant que table non partitionnée. Les opérations DML, telles que INSERT, UPDATE et DELETE, sur les tables non partitionnées déclenchent souvent des tâches Build sur l'ensemble de la table. Si la table contient une quantité excessive de données, ces tâches Build consomment beaucoup d'espace disque temporaire, ce qui augmente l'utilisation du disque sur le nœud et peut verrouiller les disques. Les tâches Build sur les grandes tables consomment également d'importantes ressources d'E/S disque et de processeur, ce qui dégrade les performances globales du cluster.
Critères de diagnostic
Une table non partitionnée est considérée comme inefficace si elle contient plus d'un milliard de lignes.
Procédure
Connectez-vous à la console AnalyticDB for MySQL. Dans le coin supérieur gauche de la console, sélectionnez une région. Dans le volet de navigation de gauche, cliquez sur Clusters. Recherchez le cluster que vous souhaitez gérer et cliquez sur son ID.
Dans le volet de navigation de gauche, choisissez .
Cliquez sur l'onglet Partition Diagnostics pour afficher les informations relatives à la section Non-partitioned Table Diagnostics.
Méthodes d'optimisation
Créez une table partitionnée et migrez les données depuis la table non partitionnée. Pour plus d'informations, consultez la rubrique CREATE TABLE.
Diagnostic des index
AnalyticDB for MySQL analyse l'utilisation des index et fournit automatiquement des suggestions d'optimisation pour les index qui n'ont pas été utilisés depuis longtemps. Vous pouvez appliquer ces suggestions pour supprimer les index inutilisés et réduire les coûts de stockage.
Diagnostic des index inutilisés
Critères de diagnostic
Un index est considéré comme inutilisé s'il n'a pas été utilisé au cours des 15 derniers jours et si son taux d'utilisation est inférieur à 1 %.
Procédure
Connectez-vous à la console AnalyticDB for MySQL. Dans le coin supérieur gauche de la console, sélectionnez une région. Dans le volet de navigation de gauche, cliquez sur Clusters. Recherchez le cluster que vous souhaitez gérer et cliquez sur son ID.
Dans le volet de navigation de gauche, choisissez .
Cliquez sur l'onglet Index Diagnostics pour afficher les détails de la section Indexes to Remove.
Dans l'onglet Available Optimization Suggestions , cliquez sur Enable pour activer le diagnostic des index. Vous pouvez ignorer cette étape si cette fonctionnalité est déjà activée.
-
Cliquez sur les onglets Available Optimization Suggestions et Applied Optimization Suggestions pour afficher les suggestions disponibles et appliquées.
Paramètre
Description
Suggestion ID
ID de la suggestion d'optimisation.
SQL
Modifications de table et de définition requises par la suggestion.
Optimization Type
Optimisation des index.
Optimization Suggestion
Recommandation détaillée pour le type d'optimisation.
Expected Optimization Benefits
Avantage attendu après application de la suggestion.
RemarqueLes avantages attendus sont des estimations basées sur des statistiques historiques et non des valeurs précises en temps réel. Utilisez-les uniquement à titre de référence.
Actions
Vous pouvez appliquer la suggestion actuelle en utilisant Apply.
Remarque-
Après la suppression d'un index, les requêtes filtrant sur cette colonne prendront plus de temps.
-
Apply indique que vous acceptez d'adopter cette suggestion d'optimisation. Après avoir cliqué sur Apply, le cluster correspondant exécute les modifications SQL et cette suggestion apparaît dans l'onglet Applied Optimization Suggestions.
-
Apply a le même effet que l'exécution du code SQL dans un client. Cette action est irréversible. Utilisez-la avec précaution.
-
Après l'émission du code SQL, la table doit terminer une opération Build pour que la modification prenne effet. Le système de base de données déclenche automatiquement l'opération Build selon des règles internes. Jusqu'au déclenchement, l'état de la suggestion reste « running ». Après le déclenchement, il passe à « completed ».
-
Diagnostic des nouveaux index
Critères de diagnostic
Ce diagnostic identifie les champs qui ont été utilisés comme filtres dans les requêtes au cours des 15 derniers jours, mais qui ne sont pas définis comme champs indexés.
Procédure
Connectez-vous à la console AnalyticDB for MySQL. Dans le coin supérieur gauche de la console, sélectionnez une région. Dans le volet de navigation de gauche, cliquez sur Clusters. Recherchez le cluster que vous souhaitez gérer et cliquez sur son ID.
Dans le volet de navigation de gauche, choisissez .
Cliquez sur l'onglet Index Diagnostics pour afficher les détails de la section Indexes to Create.
Dans l'onglet Available Optimization Suggestions , cliquez sur Enable pour activer le diagnostic des index. Vous pouvez ignorer cette étape si cette fonctionnalité est déjà activée.
-
Cliquez sur les onglets Available Optimization Suggestions et Applied Optimization Suggestions pour afficher les suggestions disponibles et appliquées.
Paramètre
Description
Suggestion ID
ID de la suggestion d'optimisation.
Index Fields
Champ à ajouter en tant qu'index.
SQL
Instruction SQL pour créer l'index.
Optimization Type
Suggestion de création d'index.
Optimization Suggestion
Décrit la fréquence d'utilisation récente du champ, indiquant son potentiel en tant que champ indexé.
Vous pouvez appliquer la suggestion actuelle en utilisant Batch Create.
RemarqueAprès l'ajout à la section Indexes to Create, la table doit terminer une opération Build pour que la modification prenne effet. Le système de base de données déclenche automatiquement l'opération Build selon des règles internes. Jusqu'au déclenchement, l'état de la suggestion reste « running ». Après le déclenchement, il passe à « completed ».
Diagnostic des index de clé primaire
Critères de diagnostic
Une table est considérée comme ayant un nombre excessif de clés primaires si elle possède plus de trois champs de clé primaire et si ces champs constituent au moins la moitié de tous les champs de la table.
Procédure
Connectez-vous à la console AnalyticDB for MySQL. Dans le coin supérieur gauche de la console, sélectionnez une région. Dans le volet de navigation de gauche, cliquez sur Clusters. Recherchez le cluster que vous souhaitez gérer et cliquez sur son ID.
Dans le volet de navigation de gauche, choisissez .
Cliquez sur l'onglet Index Diagnostics pour afficher les détails de la section Primary Key Diagnostics.
Dans l'onglet Available Optimization Suggestions , cliquez sur Enable pour activer le diagnostic des index. Vous pouvez ignorer cette étape si cette fonctionnalité est déjà activée.
Consultez les tables présentant un nombre excessif de clés primaires. Le tableau affiche les colonnes suivantes : Database , Table Name , Table Fields et Primary Key Fields .
FAQ
Pourquoi l'état de la tâche d'optimisation reste-t-il « running » après avoir cliqué sur Apply now pour une suggestion d'optimisation de table chaude et froide ?
Cause : Après avoir cliqué sur Apply , AnalyticDB for MySQL modifie la politique de stockage de la table en COLD. Cette modification nécessite une opération Build pour prendre effet. La fonctionnalité d'optimisation des données chaudes et froides ne déclenche pas immédiatement une tâche Build. Le système déclenche automatiquement cette tâche ultérieurement.
Solution : Vous pouvez attendre que le système déclenche automatiquement la tâche Build , ou copier l'instruction SQL qui déclenche la tâche Build depuis la console et l'exécuter manuellement. Une fois la tâche Build exécutée, vous pouvez vérifier son état en exécutant la commande suivante : SELECT table_name, schema_name, status FROM INFORMATION_SCHEMA.KEPLER_META_BUILD_TASK ORDER BY create_time DESC LIMIT 10; .
API associées
|
API |
Description |
|
Affichez les tables avec un nombre excessif de clés primaires dans les clusters Enterprise Edition, Basic Edition et Data Lakehouse Edition . |
|
|
Affichez le diagnostic des partitions pour les clusters Data Warehouse Edition . |