Partager via


Recommandations pour optimiser les performances des données

S’applique à cette recommandation de liste de contrôle Efficacité des Performances Power Platform Well-Architected :

PE:08 Optimisez les performances des données. Optimisez les magasins de données pour leur utilisation prévue et réelle dans la charge de travail.

Ce guide décrit les recommandations pour optimiser les performances des données. L’optimisation des performances des données consiste à optimiser l’efficacité avec laquelle la charge de travail traite et stocke les données. Chaque opération, transaction ou calcul de la charge de travail est basé généralement sur la récupération, le traitement et le stockage rapides et précis des données. Lorsque les performances des données sont optimisées, la charge de travail s’exécute correctement. Les performances des données compromises créent un effet domino de faible efficacité des performances. L’incapacité à optimiser les performances des données génère des retards de réponse, une latence accrue et une évolutivité réduite. Elle compromet l’efficacité de toute la charge de travail.

Définitions

Terme Définition
Magasin de données Ressource qui stocke des données telles qu’une base de données, un magasin d’objets ou un partage de fichiers.
Index Structure de base de données qui fournit un accès rapide aux éléments.
Traitement analytique en ligne (OLAP) Technologie qui organise de grandes bases de données métier, prend en charge des analyses complexes et effectue des requêtes analytiques complexes sans affecter négativement les systèmes transactionnels.
Traitement des transactions en ligne (OLTP) Technologie qui enregistre les interactions métier au fur et à mesure qu’elles se produisent dans les opérations quotidiennes d’une organisation.
Partitionnement Processus de division physique des données en magasins de données distincts.
Optimisation des requêtes Processus qui optimise la vitesse d’une requête de base de données.

Stratégies de conception clés

Pour optimiser l’utilisation des données, assurez-vous que les magasins de données sont optimisés pour leur utilisation prévue et pour leur utilisation réelle dans une charge de travail. L’utilisation optimisée des données peut améliorer les performances des requêtes, réduire la consommation de ressources et améliorer l’efficacité globale du système. Réfléchissez aux stratégies suivantes :

  • Profilez les données. Comprenez vos données et assurez-vous que votre modèle de données est bien adapté à votre charge de travail. Tenez compte de facteurs tels que la normalisation des données et les techniques de partitionnement. Pour une récupération efficace des données, assurez-vous de sélectionner les types de données appropriés et de définir les relations entre les tables.

  • Optimisez les performances des requêtes. Analysez et optimisez les requêtes qui s’exécutent dans la charge de travail. Utilisez des techniques telles que l’optimisation et la mise en cache des requêtes. Utilisez les vues côté serveur pour préfiltrer les données. Pour identifier les goulots d’étranglement, utilisez des outils de surveillance des performances, puis apportez les améliorations nécessaires.

  • Surveillez et optimisez régulièrement le système. Surveillez continuellement les performances de votre charge de travail et itérez la configuration du stockage de données et les optimisations des requêtes. Sur la base des meilleures pratiques d’optimisation des performances, analysez les mesures du système, identifiez les domaines à améliorer et mettez en œuvre les modifications. À mesure que les données augmentent, vous devrez peut-être mettre à jour vos requêtes pour rester performant.

Profiler les données

Le profilage des données implique d’examiner les données d’une source et de collecter des informations y afférents. L’objectif est de comprendre la qualité, la structure et les caractéristiques des données de la charge de travail. Ce processus permet l’identification de problèmes tels que des valeurs manquantes, des doublons, des formats incohérents et d’autres anomalies.

Pour un profilage efficace des données, tenez compte des stratégies suivantes :

  • Comprenez la structure des données. Examinez la structure de vos données, y compris les tables, les colonnes et les relations. Déterminez les types de données, les longueurs et les contraintes appliqués à chaque colonne. L’évaluation de la structure des données vous aide à comprendre comment les données sont organisées et comment elles sont liées à d’autres éléments de données.

  • Analysez le volume de données. Évaluez le volume de vos données pour comprendre la taille globale et les modèles de croissance. Déterminez le nombre d’enregistrements ou de documents et la taille des tables ou collections individuelles. Ces informations vous aident à estimer les besoins en stockage et à identifier les problèmes d’évolutivité.

  • Identifiez les relations entre les données. Explorez les relations entre les éléments de données. Comprenez comment les données sont connectées afin de pouvoir déterminer comment les modifications apportées à une table ou un document peuvent affecter les données associées.

  • Évaluez la qualité des données. Évaluez la qualité de vos données en examinant des facteurs tels que l’exhaustivité, l’exactitude, la cohérence et l’unicité. Identifiez les anomalies de données, les valeurs manquantes ou les enregistrements en double qui peuvent affecter l’intégrité des données et les performances des requêtes. Cette étape vous aide à identifier les domaines pour le nettoyage et l’amélioration des données.

  • Capturez la distribution des données. Analysez la distribution des valeurs au sein de chaque colonne pour déterminer les modèles de données. Identifiez les valeurs fréquentes et rares, les valeurs hors norme et les distorsions de données. Pour optimiser les performances des requêtes, analysez si des clés secondaires seraient appropriées pour fournir des performances améliorées.

Surveiller les performances des données

La surveillance des performances des données est la pratique consistant à suivre l’efficacité des magasins de données de manière cohérente. Elle implique la collecte et l’analyse des mesures de performances spécifiques aux opérations de données, en utilisant des outils adaptés aux solutions de surveillance au niveau du système, spécifiques à la base de données ou tierces. Une surveillance efficace des performances des données vous permet d’identifier et d’atténuer de manière proactive les goulots d’étranglement potentiels, garantissant ainsi l’efficacité des tâches et processus liés aux données.

Pour surveiller les performances des données, tenez compte des stratégies suivantes :

  • Collectez des mesures spécifiques aux données. Collectez des indicateurs clés directement liés aux performances des données. Ces mesures incluent les temps de réponse aux requêtes et le débit de données.

  • Configurezdes alertes de données. Configurez des alertes spécifiquement pour les mesures de données. Utilisez des seuils prédéfinis ou des anomalies dans ces mesures pour déclencher des alertes. Les alertes vous permettent de recevoir des notifications lorsque les mesures de performances dépassent les plages acceptables ou affichent un comportement anormal ; par exemple, si une requête de base de données prend plus de temps que prévu ou si le débit de données diminue considérablement. Vous pouvez configurer ces alertes à l’aide d’outils de surveillance spécialisés ou de scripts personnalisés.

  • Diagnostiquez les problèmes de performances des données. Examinez régulièrement les mesures de données collectées pour identifier les goulots d’étranglement potentiels ou la dégradation des performances dans les opérations de données. Les outils de visualisation ou les tableaux de bord peuvent s’avérer inestimables dans ce processus, en aidant à mettre en évidence les tendances, les goulots d’étranglement et les valeurs hors normes dans les performances des données. Une fois identifiés, examinez les causes profondes de ces problèmes et planifiez les mesures correctives appropriées.

Partitionner les données

Le partitionnement implique de diviser de grands ensembles de données ou des charges de travail à volume élevé en sous-ensembles plus petits et gérables. Le partitionnement améliore l’efficacité des performances des données en distribuant la charge de travail et en améliorant le traitement parallèle. Il garantit également un accès aux données plus efficace en fonction de besoins spécifiques et de modèles de requêtes. Vous pouvez partitionner les données verticalement ou horizontalement (également appelé sharding). Par exemple, si vous utilisez des tables élastiques Dataverse, considérez quelle devrait être la clé de partitionnement.

Stratégie Définition Exemple Cas d’utilisation
Partitionnement vertical Divisez une table en tables plus petites en sélectionnant des colonnes ou des champs spécifiques pour chaque partition. Chaque partition représente un sous-ensemble des données complètes. Si vous disposez d’une table avec les colonnes A, B, C et D, vous pouvez créer une table avec les colonnes A et B et une autre avec les colonnes C et D. - Une table contient de nombreuses colonnes, mais les requêtes n’accèdent pas à toutes les colonnes ensemble.
- Certaines colonnes sont plus grandes que d’autres et les séparer peut optimiser les performances d’E/S.
- Différentes parties de données ont des modèles d’accès différents.
Partitionnement horizontal Divisez les données en fonction de lignes ou de plages de valeurs (également appelé partitionnement). Chaque partition contient un sous-ensemble de lignes présentant des caractéristiques similaires. Si vous disposez d’une table contenant les lignes 1 à 1 000, vous pouvez créer une partition avec les lignes 1 à 500 et une autre avec les lignes 501 à 1 000. - Un jeu de données est trop volumineux pour un seul emplacement ou serveur.
- Les données sont accessibles en fonction de plages ou de filtres spécifiques.
- Nécessité de distribuer la charge de travail sur des nœuds ou serveurs physiques pour améliorer les performances.

Pour partitionner vos données, procédez comme suit :

  • Analysez les données et les requêtes. Analysez les modèles de données et de requêtes pour identifier les stratégies de partitionnement ou de sharding appropriées. Comprenez la nature des données, les modèles d’accès et les exigences de distribution.

  • Déterminez une clé. Choisissez une clé de partitionnement ou de sharding pour distribuer les données sur des partitions ou des shards. Sélectionnez soigneusement la clé en fonction des caractéristiques des données et des exigences de requête.

  • Déterminez la logique. Déterminez une logique de partitionnement en fonction de la clé choisie. Envisagez de diviser les données en plages, d’appliquer des algorithmes de hachage ou d’utiliser d’autres techniques de partitionnement.

Optimiser les requêtes

L’optimisation des requêtes affine les requêtes pour réduire les données qualifiées et les données renvoyées. Ces ajustements augmentent l’efficacité et la rapidité de la récupération des données. En conséquence, la base de données a une charge de travail plus légère, les ressources fonctionnent plus efficacement et les utilisateurs bénéficient d’interactions plus fluides.

Pour optimiser les requêtes de base de données, tenez compte des stratégies suivantes :

  • Réécrivez les requêtes. Examinez et analysez les requêtes complexes pour identifier les opportunités de les réécrire. Envisagez de restructurer la logique des requêtes, d’éliminer les opérations redondantes ou de simplifier la syntaxe des requêtes.

  • Évitez le problème de requête N+1. Réduisez le nombre d’allers-retours à la base de données en utilisant des jointures et la récupération par lots pour récupérer les données associées de manière efficace.

  • Réorganisez les jointures. Évaluez et envisagez de réorganiser l’ordre de jointure pour réduire le nombre de lignes dans chaque opération de jointure. L’ordre dans lequel vous joignez les tables peut affecter les performances des requêtes.

  • Mettez en cache les requêtes. Stockez les résultats des requêtes fréquemment exécutées pour une réutilisation facile. La mise en cache des requêtes élimine la nécessité d’exécuter à plusieurs reprises la même requête et réduit la surcharge de traitement des requêtes.

  • Surveillez et optimisez. Surveillez les mesures de performances des requêtes, telles que le temps d’exécution, l’utilisation des ressources et le débit des requêtes. Utilisez les outils de profilage de la base de données et les fonctionnalités de surveillance pour identifier les requêtes à faibles performances. Utilisez ces informations pour optimiser les performances des requêtes.

Archiver et vider les données

L’archivage et le vidage sont des stratégies qui rationalisent le stockage des données. L’archivage déplace les données plus anciennes et moins fréquemment consultées vers un espace de stockage plus rentable. Le vidage des données supprime définitivement les données redondantes. Les deux méthodes contribuent à l’efficacité des performances en réduisant le volume de données, en augmentant la vitesse d’accès aux données et en réduisant les temps de sauvegarde et de restauration.

  • Réduction du volume de données : moins de données signifie des temps de traitement plus rapides, garantissant des réponses rapides aux demandes des utilisateurs.
  • Augmentation de la vitesse d’accès aux données : un jeu de données rogné permet des requêtes et une récupération de données plus rapides, optimisant ainsi la réactivité du système.
  • Réduction des temps de sauvegarde et de restauration : les jeux de données plus petits accélèrent les processus de sauvegarde et de restauration, réduisant les interruptions et garantissant des performances cohérentes.

L’archivage et le vidage jouent un rôle déterminant dans le maintien d’une efficacité optimale des performances dans les systèmes basés sur les données.

Optimiser la charge de stockage

L’optimisation de la charge de stockage consiste à rationaliser les demandes envoyées au système de stockage. Elle aide à éliminer les requêtes inutiles, à améliorer la récupération des données et à éviter de surcharger le système de stockage. L’optimisation de la charge de stockage garantit que le système de stockage reste réactif aux demandes légitimes et maintient des performances optimales. Mettez en œuvre des stratégies pour réduire la charge de traitement dans le magasin de données. Pour optimiser la charge du magasin de données, tenez compte des stratégies qui suivent.

Utiliser la mise en cache

La mise en cache stocke les données couramment consultées dans une zone de stockage à accès rapide, ce qui rend la récupération des données plus rapide que leur extraction à partir de la source principale. Cette technique optimise les performances des données en réduisant les temps d’accès et en évitant les récupérations de données répétitives. La mise en cache améliore les vitesses de lecture et les temps de réponse de l’utilisateur, en particulier pour les données fréquemment consultées. Cette méthode est plus efficace sur les données statiques ou les données qui changent rarement.

Pour garantir une efficacité optimale de la mise en cache, tenez compte de facteurs tels que les stratégies d’expiration, les stratégies d’éviction et la gestion de la taille du cache. Ajustez les paramètres, tels que la durée de vie (TTL), pour des performances optimales. Pour utiliser un cache pour optimiser la charge de stockage, envisagez les stratégies suivantes :

  • Mise en cache en mémoire : effectuez une mise en cache en mémoire pour stocker les données fréquemment consultées en mémoire pour une récupération rapide. Vous pouvez utiliser cette technique pour les données de l’application qui sont coûteuses à calculer et à récupérer à partir d’une base de données. La mise en cache en mémoire est utile pour les données que vous lisez fréquemment mais qui ne sont pas modifiées fréquemment. Par exemple, vous pouvez utiliser des variables dans des flux de cloud ou des collections dans des applications canevas pour mettre les données en cache.

  • Mise en cache des requêtes de la base de données : utilisez cette technique pour mettre en cache les résultats des requêtes de la base de données afin d’éviter d’exécuter la même requête plusieurs fois. La mise en cache des requêtes de la base de données est utile pour les requêtes de la base de données complexes et chronophages. Lorsque vous mettez en cache les résultats d’une requête, les requêtes suivantes pour la même requête sont renvoyées rapidement. Envisagez également d’utiliser les vues côté serveur lorsque cela est possible pour préfiltrer les données afin d’affiner les données pertinentes pour votre requête.

  • Mise en cache du réseau de distribution de contenu : utilisez cette technique pour mettre en cache le contenu Web sur des serveurs de réseau distribués afin de réduire la latence et d’améliorer la distribution du contenu. La mise en cache du réseau de distribution de contenu est efficace pour le contenu statique, comme les images, les fichiers CSS et les fichiers JavaScript. Les réseaux de distribution de contenu stockent des copies du contenu dans plusieurs emplacements dans le monde entier, afin que les utilisateurs puissent accéder au contenu à partir d’un serveur géographiquement proche d’eux.

Optimiser les mises à jour de données

L’optimisation des mises à jour de données implique d’évaluer les mises à jour de données effectuées pour garantir leur performance. Les mises à jour peuvent affecter les performances plus que d’autres opérations, car elles peuvent déclencher un travail inutile et provoquer des conflits de verrouillage.

Pour évaluer comment optimiser les mises à jour de données, considérez :

  • Modifications des données. Optimisez l’automatisation pour utiliser des pré-images des données ou des filtres afin de réduire le travail lorsqu’aucun changement réel ne s’est produit. Évitez de déclencher l’automatisation pour des données non modifiées.

  • Automatisation. Évaluez quand et comment les mises à jour sont déclenchées en fonction des modifications des données et optimisez les déclencheurs pour inclure un filtre. Par exemple, pour déclencher l’automatisation uniquement lorsqu’un champ spécifique dans la source de données est modifié. Évaluez les mises à jour qui déclenchent des automatisations de manière incrémentielle plusieurs fois. À la place, déterminez si vous pouvez créer une opération personnalisée pour gérer tout le traitement. Par exemple, si une commande est expédiée et que la date d’expédition et le numéro de suivi sont mis à jour séparément, ils peuvent tous deux être mis à jour en même temps dans une opération « ShipOrder » personnalisée.

  • Blocages. Évaluez les opérations de mise à jour lentes qui pourraient causer des problèmes en raison de plusieurs flux qui mettent à jour les mêmes données dans des séquences différentes. Cette inefficacité peut générer des conflits de verrouillage, voire des blocages potentiels, entraînant un retraitement inutile. Mettez à jour les différentes ressources dans la même séquence pour réduire les conflits.

  • Mises à jour en bloc. Si vous exécutez des opérations sur plusieurs lignes d’une table, envisagez d’utiliser des opérations en bloc.

Optimiser le déplacement et le traitement des données

L’optimisation du déplacement et du traitement des données implique d’améliorer l’efficacité et les performances des opérations liées à l’extraction, à la transformation, au chargement et au traitement des données. Tenez compte des aspects clés suivants pour optimiser le déplacement et le traitement des données :

  • Optimisation de l’extraction, de la transformation et du chargement (ETL) : optimisez les processus ETL pour réduire le temps de traitement. Vous pouvez rationaliser le processus d’extraction, mettre en œuvre des algorithmes de transformation efficaces et optimiser le processus de chargement. Lorsque vous rendez chaque étape efficace, vous optimisez le flux de travail global.

  • Traitement parallèle : utilisez des techniques de traitement parallèle pour améliorer les performances. Lorsque vous distribuez les tâches de traitement des données sur plusieurs threads ou nœuds, vous pouvez diviser et traiter la charge de travail simultanément, ce qui entraîne un traitement rapide.

  • Traitement par lots : regroupez les tâches similaires pour réduire la surcharge causée par les opérations répétées. Traitez plusieurs tâches par lots pour réduire le temps de traitement global.

Conception pour la proximité des données

La proximité des données fait référence au placement stratégique des données plus près des utilisateurs ou des services qui y accèdent le plus fréquemment. La réduction de la distance physique ou logique entre les données et leurs utilisateurs garantit un accès plus rapide aux données et une meilleure réactivité. Pour optimiser la conception pour la proximité, tenez compte de ces stratégies :

  • Évaluer les modèles d’accès aux données : évaluez les modèles d’accès de votre charge de travail et les données fréquemment consultées. Cette analyse peut aider à déterminer où placer les données pour en tirer le meilleur parti.

  • Choisir des solutions prenant en charge la relocalisation des données : envisagez des solutions qui offrent une relocalisation dynamique des données en fonction de l’évolution des modèles d’accès, garantissant ainsi un positionnement optimal des données.

  • Choisir des solutions prenant en charge la synchronisation des données : si vous servez une base d’utilisateurs distribuée, choisissez des solutions qui permettent la synchronisation des données entre les différentes régions, pour garantir que les réplicas de données sont disponibles à proximité des utilisateurs.

Compromis : si les données sous-jacentes sont fréquemment modifiées, mettez en œuvre un mécanisme d’invalidation du cache pour garantir que les données mises en cache restent à jour.

Facilitation de Power Platform

Surveiller les performances des données : pour surveiller les performances des données, envisagez d’utiliser Azure Monitor pour collecter et analyser les mesures de l’infrastructure, les journaux et les données de l’application. Vous pouvez intégrer Monitor à d’autres services comme Application Insights. Application Insights fournit une surveillance des performances de l’application et prend en charge de nombreuses plateformes.

Application Insights collecte des données sur l’utilisation et les performances. Vous pouvez utiliser Log Analytics pour corréler ces données avec les données de configuration et de performances dans les ressources Azure. Le flux de données Application Insights pour Dataverse fournit actuellement des données de performances liées aux appels entrants de l’API Dataverse, aux appels d’exécution du plug-in Dataverse et aux appels du SDK Dataverse.

Optimiser les modèles de données de requête dans les applications canevas : suivez les conseils et suggestions documentés. Voir Modèles de données de requête optimisés dans Power Apps.

Optimiser la façon dont vous personnalisez, étendez ou effectuez l’intégration avec Dataverse : suivez les meilleures pratiques et les conseils documentés. Voir Bonnes pratiques et conseils pour utiliser Microsoft Dataverse.

Optimiser les requêtes de base de données et les performances des index : utilisez la fonction d’analyse des performances des requêtes d’Azure SQL Database pour optimiser les requêtes, les tables et les bases de données. Vous pouvez également utiliser cette fonction pour identifier et résoudre les problèmes de performances des requêtes.

Pour les bases de données relationnelles, suivez les directives de conception d’index, les conseils sur les index SQL Server et les conseils sur les index Azure Cosmos DB. Utilisez SQL Database pour effectuer l’optimisation automatique des requêtes afin d’améliorer leurs performances.

Pour les bases de données SQL, vous devez régulièrement réorganiser ou recréer les index. Identifiez les requêtes lentes et optimisez-les pour améliorer les performances. De nombreux moteurs de bases de données disposent de fonctions d’optimisation des requêtes. Pour plus d’informations, consultez les meilleures pratiques pour les performances des requêtes.

Azure Cosmos DB dispose d’une stratégie d’indexation par défaut qui indexe chaque propriété de chaque élément et applique des index de plage pour toute chaîne ou tout nombre. Cette stratégie vous offre des performances de requête efficaces et vous n’avez pas besoin de gérer les index à l’avance.

Optimiser la charge de stockage : de nombreux services de base de données Azure prennent en charge les réplicas en lecture. La disponibilité et la configuration des réplicas en lecture varient en fonction du service de base de données Azure. Reportez-vous à la documentation officielle de chaque service pour comprendre les détails et les options.

Voir aussi

Liste de contrôle Efficacité des performances

Référez-vous à l’ensemble complet des recommandations.