Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Comprendre DPUs dans EXPLAIN ANALYZE
Aurora DSQL fournit des informations sur les unités de traitement distribué (DPU) au niveau des instructions dans les résultats du EXPLAIN ANALYZE VERBOSE plan, ce qui vous donne une meilleure visibilité sur le coût des requêtes pendant le développement. Cette section explique ce DPUs que c'est et comment les interpréter dans le EXPLAIN ANALYZE VERBOSE résultat.
Qu'est-ce qu'un DPU ?
Une unité de traitement distribuée (DPU) est la mesure normalisée du travail effectué par Aurora DSQL. Il est composé de :
ComputedPU — Temps passé à exécuter des requêtes SQL
ReadDPU — Ressources utilisées pour lire les données depuis le stockage
WriteDPU - Ressources utilisées pour écrire des données dans le stockage
MultiRegionWriteDPU : ressources utilisées pour répliquer les écritures sur des clusters homologues dans des configurations multirégionales.
Utilisation du DPU dans EXPLAIN ANALYZE VERBOSE
Aurora DSQL s'étend EXPLAIN ANALYZE VERBOSE pour inclure une estimation de l'utilisation du DPU au niveau des instructions jusqu'à la fin de la sortie. Cela fournit une visibilité immédiate sur le coût des requêtes, vous aidant à identifier les facteurs de coût de la charge de travail, à optimiser les performances des requêtes et à mieux prévoir l'utilisation des ressources.
Les exemples suivants montrent comment interpréter les estimations du DPU au niveau des instructions incluses dans la sortie EXPLAIN ANALYZE VERBOSE.
Exemple 1 : requête SELECT
EXPLAIN ANALYZE VERBOSE SELECT * FROM test_table;
QUERY PLAN
----------------------------------------------------
Index Only Scan using test_table_pkey on public.test_table (cost=125100.05..171100.05 rows=1000000 width=36) (actual time=2.973..4.482 rows=120 loops=1)
Output: id, context
-> Storage Scan on test_table_pkey (cost=125100.05..171100.05 rows=1000000 width=36) (actual rows=120 loops=1)
Projections: id, context
-> B-Tree Scan on test_table_pkey (cost=125100.05..171100.05 rows=1000000 width=36) (actual rows=120 loops=1)
Query Identifier: qymgw1m77maoe
Planning Time: 11.415 ms
Execution Time: 4.528 ms
Statement DPU Estimate:
Compute: 0.01607 DPU
Read: 0.04312 DPU
Write: 0.00000 DPU
Total: 0.05919 DPU
Dans cet exemple, l'instruction SELECT effectue une analyse d'index uniquement. La majeure partie du coût provient donc de Read DPU (0,04312), qui représente les données extraites du stockage, et de Compute DPU (0,01607), qui reflète les ressources de calcul utilisées pour traiter et renvoyer les résultats. Il n'y a pas de DPU d'écriture puisque la requête ne modifie pas les données. Le DPU total (0,05919) est la somme de Compute + Read + Write.
Exemple 2 : requête INSERT
EXPLAIN ANALYZE VERBOSE INSERT INTO test_table VALUES (1, 'name1'), (2, 'name2'), (3, 'name3');
QUERY PLAN
----------------------------------------------------
Insert on public.test_table (cost=0.00..0.04 rows=0 width=0) (actual time=0.055..0.056 rows=0 loops=1)
-> Values Scan on "*VALUES*" (cost=0.00..0.04 rows=3 width=122) (actual time=0.003..0.008 rows=3 loops=1)
Output: "*VALUES*".column1, "*VALUES*".column2
Query Identifier: jtkjkexhjotbo
Planning Time: 0.068 ms
Execution Time: 0.543 ms
Statement DPU Estimate:
Compute: 0.01550 DPU
Read: 0.00307 DPU (Transaction minimum: 0.00375)
Write: 0.01875 DPU (Transaction minimum: 0.05000)
Total: 0.03732 DPU
Cette instruction effectue principalement des écritures, de sorte que la majeure partie du coût est associée au DPU d'écriture. Le Compute DPU (0,01550) représente le travail effectué pour traiter et insérer les valeurs. Le DPU de lecture (0,00307) reflète les lectures mineures du système (pour les recherches de catalogue ou les vérifications d'index).
Notez les minimums de transaction indiqués à côté de Lecture et écriture DPUs. Ils indiquent les coûts de base par transaction qui s'appliquent uniquement lorsque l'opération inclut des lectures ou des écritures. Cela ne signifie pas que chaque transaction entraîne automatiquement une charge de 0,00375 DPU en lecture ou de 0,05 en écriture DPU. Ces minimums sont plutôt appliqués au niveau de la transaction lors de l'agrégation des coûts et uniquement si des lectures ou des écritures ont lieu dans le cadre de cette transaction. En raison de cette différence de portée, les estimations au niveau des relevés EXPLAIN ANALYZE VERBOSE peuvent ne pas correspondre exactement aux mesures au niveau des transactions indiquées dans les données de facturation. CloudWatch
Utilisation des informations du DPU pour l'optimisation
Les estimations du DPU par instruction vous offrent un moyen puissant d'optimiser les requêtes au-delà du simple temps d'exécution. Cas d’utilisation courants :
Connaissance des coûts : déterminez le coût d'une requête par rapport aux autres.
Optimisation du schéma : comparez l'impact des index ou des modifications de schéma sur les performances et l'efficacité des ressources.
Planification du budget : estimez le coût de la charge de travail en fonction de l'utilisation observée du DPU.
Comparaison des requêtes : évaluez les approches de requête alternatives en fonction de leur consommation relative de DPU.
Interprétation des informations du DPU
Tenez compte des meilleures pratiques suivantes lorsque vous utilisez des données DPU provenant de EXPLAIN ANALYZE VERBOSE :
Utilisez-le de manière directionnelle : considérez le DPU indiqué comme un moyen de comprendre le coût relatif d'une requête plutôt que comme une correspondance exacte avec les CloudWatch métriques ou les données de facturation. Des différences sont attendues car les
EXPLAIN ANALYZE VERBOSErapports indiquent les coûts au niveau des relevés, tandis qu'ils CloudWatch regroupent l'activité au niveau des transactions. CloudWatch inclut également les opérations en arrière-plan (telles que ANALYZE ou les compactages) et les frais généraux de transaction (BEGIN/COMMIT) qui sontEXPLAIN ANALYZE VERBOSEintentionnellement exclus.La variabilité du DPU entre les cycles est normale dans les systèmes distribués et n'indique aucune erreur. Des facteurs tels que la mise en cache, les modifications du plan d'exécution, la simultanéité ou les changements dans la distribution des données peuvent tous entraîner la consommation de ressources différentes d'une requête à l'autre.
Petites opérations par lots : si votre charge de travail génère de nombreux petits relevés, envisagez de les regrouper en opérations plus importantes (ne dépassant pas 10 Mo). Cela permet de réduire les frais généraux d'arrondissement et de produire des estimations de coûts plus pertinentes.
À utiliser pour le réglage, pas pour la facturation : les données DPU entrées
EXPLAIN ANALYZE VERBOSEsont conçues pour la prise en compte des coûts, le réglage des requêtes et l'optimisation. Il ne s'agit pas d'un indicateur de facturation. Fiez-vous toujours aux CloudWatch indicateurs ou aux rapports de facturation mensuels pour obtenir des données fiables sur les coûts et l'utilisation.