View a markdown version of this page

Comment fonctionne la facturation dans Aurora DSQL - Amazon Aurora DSQL

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.

Comment fonctionne la facturation dans Aurora DSQL

Avec Amazon Aurora DSQL, vous ne payez que pour ce que vous utilisez, sans frais initiaux. Cette section explique comment Aurora DSQL mesure l'activité de votre base de données et la traduit en frais sur votre AWS facture. Pour connaître les tarifs actuels par région, consultez la page de tarification d'Aurora DSQL.

Comment fonctionne le comptage

Contrairement aux bases de données traditionnelles qui facturent la capacité allouée, Aurora DSQL facture uniquement le travail réellement effectué. Aurora DSQL mesure deux composants principaux : l'activité de la base de données, mesurée en unités de traitement distribuées (DPUs), et le stockage, mesuré en Go par mois.

DPUs mesurent la quantité de travail que le système effectue pour exécuter votre charge de travail SQL et sont composés de trois composants pour les clusters à région unique : calcul DPUs DPUs, lecture et écriture DPUs. Les clusters multirégionaux nécessitent un composant MultiRegion Write DPU supplémentaire. Pour plus de détails, consultez la section Facturation multirégionale.

Le tableau suivant récapitule les composants qu'Aurora DSQL utilise pour mesurer l'activité de votre base de données. Sur votre facture, vous ne voyez que deux rubriques : une pour le stockage et une pour le DPU, qui représente la somme de chacun des composants individuels.

Unité de mesure Type d'activité Mesure
DPU de calcul Traitement des requêtes Durée du processeur
Lire le DPU Lire les données de votre base de données Octets lus depuis le stockage
Écrire un DPU Écrire des données dans votre base de données Octets écrits dans le stockage
Stockage Rangement de table GIB-mois

Explication du dosage des composants DPU

Pour chaque transaction, Aurora DSQL calcule le DPU total comme la somme de trois composants : DPU de calcul, DPU de lecture et DPU d'écriture. Les sections suivantes expliquent comment Aurora DSQL mesure chaque composant.

Total DPU = ComputeDPU + ReadDPU + WriteDPU

PU informatique

DPUs Les calculs sont mesurés en utilisant le temps de traitement total passé à exécuter votre requête, y compris les jointures, les fonctions, les agrégations, le tri et la planification des requêtes. Certaines parties de votre requête pouvant être traitées en parallèle, le Compute DPU reflète la somme de tous les temps de traitement, et non l'heure de l'horloge murale de la requête.

La formule suivante résume le mode de calcul de Compute DPUs :

ComputeDPU = Total Compute time (in seconds)

PU écrit

Pour chaque transaction, Aurora DSQL mesure Write DPUs par le nombre total d'octets écrits sur le stockage. L'écriture DPUs inclut le total des données écrites dans votre table de base ainsi que tous les index secondaires. Aurora DSQL facture chaque ligne écrite dans votre table de base et dans vos index secondaires dont la valeur est inférieure à 128 octets comme si elle était de 128 octets. Aurora DSQL facture une transaction d'écriture qui écrit moins de 1 024 octets comme si elle écrivait 1 024 octets.

Note

Les opérations d'écriture entraînent également des frais de ReadDPU, car Aurora DSQL lit l'index de la clé primaire pour vérifier l'unicité avant d'écrire.

Les formules suivantes indiquent les étapes à suivre pour calculer Write DPUs :

Étape 1 : Calculez les octets écrits

Bytes Written = Sum of max(size of each row, 128 bytes) for all rows written

Étape 2 : Calculez le WriteDPU

WriteDPU = max(Bytes Written, 1024) × 0.00004883

Lire le DPU

Pour chaque transaction, Aurora DSQL mesure le nombre total DPUs d'octets lus depuis le stockage. La lecture DPUs inclut les données lues à partir de votre table de base ainsi que de tout index secondaire.

Minimum par partition : Aurora DSQL mesure les octets lus par partition de stockage, et non par ligne. Si une demande de lecture envoyée à une partition de stockage renvoie moins de 128 octets, Aurora DSQL l'arrondit à 128 octets. Par exemple, si votre requête lit à partir de 4 partitions (200 octets d'une partition et 50 octets de chacune des trois autres), les trois lectures de 50 octets sont arrondies chacune à 128 octets, soit un total de 200 + 128 + 128 + 128 = 584 octets facturés.

Transaction minimale : Aurora DSQL facture une transaction de lecture qui lit moins de 2 048 octets au total comme si elle lisait 2 048 octets.

Les formules suivantes indiquent les étapes de calcul de Read DPUs :

Étape 1 : Calculez les octets lus

Bytes Read = # of rows read × size of each row
Note

Le nombre réel d'octets lus dépend de la manière dont vos données sont réparties sur les partitions de stockage, car le minimum de 128 octets par partition est appliqué par partition. Si la taille de toutes vos lignes est supérieure à 128 octets, vous pouvez simplement multiplier le nombre de lignes lues par la taille de chaque ligne.

Étape 2 : Calculez ReadDPU

ReadDPU = max(Bytes Read, 2048) × 0.00000183105

Exemples de facturation

Les exemples suivants montrent comment Aurora DSQL calcule DPUs pour les opérations courantes. Dans ces exemples, les valeurs de coût utilisent le prix de la région us-east-1. Pour connaître les tarifs dans d'autres régions, consultez la page de tarification d'Aurora DSQL.

Cet exemple illustre un calcul ReadDPU basé sur une recherche de points dans lequel le minimum de transaction s'applique.

Schéma :

CREATE TABLE orders ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), customer_id VARCHAR(50) NOT NULL, order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, total_amount DECIMAL(10,2), status VARCHAR(20) ); -- Average row size: ~100 bytes

Requête :

SELECT * FROM orders WHERE customer_id = 'cust-12345';

Scénario : La requête renvoie 5 lignes d'environ 100 octets chacune. En supposant que toutes les lignes résident dans une partition de stockage, le nombre total d'octets lus est de 5 × 100 = 500 octets. Étant donné que 500 octets dépassent le minimum de 128 octets par partition, aucun minimum par partition ne s'applique.

Calculez ReadDPU :

ReadDPU = max(500, 2048) × 0.00000183105 = 2048 × 0.00000183105 = 0.00375

Le minimum de transaction de 2 048 octets s'applique puisque 500 < 2 048.

Coût total de la transaction :

En supposant un temps d'exécution de la requête de 3 ms (0,003 seconde) :

ComputeDPU: 0.003 ReadDPU: 0.00375 WriteDPU: 0.0 ------------------- Total DPU: 0.00675

Schéma :

CREATE TABLE orders ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), customer_id VARCHAR(50) NOT NULL, order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, total_amount DECIMAL(10,2), status VARCHAR(20) ); -- Average row size: ~100 bytes -- Table contains 100 orders for customer 'cust-12345'

Requête :

SELECT * FROM orders WHERE customer_id = 'cust-12345' AND total_amount > 500.00;

Scénario : La requête analyse 100 lignes à la recherche du client « cust-12345 », mais le total_amount > 500.00 filtre réduit le résultat à seulement 10 lignes renvoyées. Aurora DSQL facture les 100 lignes analysées. En supposant que toutes les lignes résident dans une partition de stockage, le nombre total d'octets lus est de 100 × 100 = 10 000 octets.

Calculez ReadDPU :

ReadDPU = max(10000, 2048) × 0.00000183105 = 10000 × 0.00000183105 = 0.01831

Étant donné que 10 000 octets dépassent le minimum de transaction de 2 048 octets, les octets réellement lus sont utilisés.

Coût total de la transaction :

En supposant un temps d'exécution de la requête de 8 ms (0,008 seconde) :

ComputeDPU: 0.008 ReadDPU: 0.01831 WriteDPU: 0.0 ------------------- Total DPU: 0.02631
Important

Pour minimiser les coûts de ReadDPU, concevez des requêtes et des index pour analyser uniquement les lignes dont vous avez besoin. Dans cet exemple, l'ajout d'un index (customer_id, total_amount) peut permettre à la requête de scanner moins de lignes.

Schéma :

CREATE TABLE orders ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), customer_id VARCHAR(50) NOT NULL, order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, total_amount DECIMAL(10,2), status VARCHAR(20) ); -- Average row size: ~100 bytes

Requête :

INSERT INTO orders (customer_id, total_amount, status) VALUES ('cust-67890', 150.00, 'pending');

Scénario : insérez 1 ligne d'environ 100 octets.

Calcul du processeur écrit :

Étape 1 - Calculez les octets écrits :

1 row × max(100 bytes, 128 bytes) = 1 × 128 = 128 bytes

Étape 2 - Calculez le WriteDPU :

WriteDPU = max(128, 1024) × 0.00004883 = 1024 × 0.00004883 = 0.05

Le minimum de transaction de 1 024 octets s'applique puisque 128 < 1 024.

ReadDPU (vérification de la clé primaire) :

Aurora DSQL lit l'index de la clé primaire pour vérifier l'unicité avant de l'écrire. Cela entraîne les frais de lecture minimaux de la transaction.

ReadDPU = 0.00375 (transaction minimum)

Coût total de la transaction :

En supposant un temps d'exécution de la requête de 8 ms (0,008 seconde) :

ComputeDPU: 0.008 ReadDPU: 0.00375 WriteDPU: 0.05 ------------------- Total DPU: 0.06175

Schéma :

CREATE TABLE orders ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), customer_id VARCHAR(50) NOT NULL, order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, total_amount DECIMAL(10,2), status VARCHAR(20) ); -- Average row size: ~100 bytes

Requête :

INSERT INTO orders (customer_id, total_amount, status) VALUES ('cust-001', 100.00, 'pending'), ('cust-002', 150.00, 'pending'), ... -- 100 rows total ('cust-100', 200.00, 'pending');

Scénario : insérez 100 lignes d'environ 100 octets chacune.

Calcul du processeur écrit :

Étape 1 - Calculez les octets écrits :

100 rows × max(100 bytes, 128 bytes) = 100 × 128 = 12,800 bytes

Étape 2 - Calculez le WriteDPU :

WriteDPU = max(12800, 1024) × 0.00004883 = 12800 × 0.00004883 = 0.625

ReadDPU (vérifications des clés primaires) :

Aurora DSQL lit l'index de clé primaire pour chaque ligne afin de vérifier l'unicité. En supposant que les 100 recherches clés résident dans une partition de stockage, le nombre total d'octets lus est de 100 × 16 octets (UUID) = 1 600 octets :

ReadDPU = max(1600, 2048) × 0.00000183105 = 2048 × 0.00000183105 = 0.00375

Le minimum de transaction de 2 048 octets s'applique puisque 1 600 < 2 048.

Coût total de la transaction :

En supposant un temps d'exécution de la requête de 80 ms (0,08 seconde) :

ComputeDPU: 0.08 ReadDPU: 0.00375 WriteDPU: 0.625 ------------------- Total DPU: 0.70875

Facturation multirégionale

Les clusters multirégionaux nécessitent un composant MultiRegion Write DPU supplémentaire en plus des composants standard Compute, Read, and Write. DPUs Cette section s'applique uniquement aux clusters multirégionaux. Les clusters à région unique ne sont pas soumis à ces frais.

MultiRegion L'écriture DPUs mesure le nombre total d'octets écrits dans la région pair. Étant donné qu'Aurora DSQL réplique de manière synchrone les données que vous écrivez dans la région homologue, la valeur du DPU d' MultiRegion écriture est équivalente à celle du DPU d'écriture. Aurora DSQL charge ce DPU dans la région d'où provient l'écriture, et non dans la région homologue.

MultiRegionWriteDPU = WriteDPU

Surveillance de l'utilisation du DPU avec CloudWatch

Aurora DSQL publie des métriques d'utilisation sur Amazon CloudWatch, ce qui vous permet de surveiller la consommation en temps quasi réel.

Métriques du DPU disponibles

Métriques du DPU
CloudWatch métrique Description Dimension
WriteDPU Écrire un composant d'utilisation ClusterId
ReadDPU Lire le composant d'utilisation ClusterId
ComputeDPU Composant de traitement des requêtes ClusterId
MultiRegionWriteDPU Réplication multirégionale (clusters multirégionaux uniquement) ClusterId
TotalDPU Somme de tous les composants du DPU ClusterId

Affichage des métriques du DPU

Pour afficher les métriques du DPU dans CloudWatch
  1. Ouvrez la CloudWatch console.

  2. Accédez à Metrics, puis à AurorADSQL. ClusterId

  3. Sélectionnez votre cluster et les métriques DPU que vous souhaitez surveiller.

Astuce

Utilisez la statistique Sum pour les métriques DPU afin de connaître l'utilisation totale sur une période donnée. Ajoutez le dernier label pour voir la valeur la plus récente.

Mesures d'observabilité supplémentaires

Pour obtenir la liste complète des métriques et des fonctionnalités de surveillance d'Aurora DSQL, consultezSurveillance et journalisation pour Aurora DSQL.

Métriques d'observabilité
Métrique Description
ClusterStorageSize Taille de stockage actuelle en octets
TotalTransactions Nombre total de transactions exécutées
ReadOnlyTransactions Transactions en lecture seule exécutées
QueryTimeouts Requêtes dont le délai a été dépassé
OccConflicts Transactions annulées en raison de conflits OCC
BytesWritten Octets bruts écrits dans le stockage
BytesRead Octets bruts lus depuis le stockage

Utiliser EXPLAIN ANALYZE VERBOSE pour connaître les coûts

Aurora DSQL s'étend EXPLAIN ANALYZE VERBOSE pour inclure une estimation de l'utilisation du DPU au niveau des instructions à 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.

Note

Vous devez utiliser EXPLAIN ANALYZE VERBOSE (avec VERBOSE) pour voir les estimations du DPU. Un fichier EXPLAIN ANALYZE sans VERBOSE n'affiche aucune information sur le DPU.

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'existe aucun 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 entre parenthèses à côté de Read and Write. DPUs Ces minimums s'appliquent au niveau de la transaction, ce qui signifie que le total du DPU en lecture ou en écriture pour l'ensemble d'une transaction n'est jamais inférieur à ces valeurs. Si vous utilisez EXPLAIN ANALYZE VERBOSE pour prévoir les coûts et qu'il s'agit du seul relevé de la transaction, utilisez les valeurs minimales de la transaction plutôt que les estimations brutes du relevé. Si la transaction contient plusieurs relevés, les minimums s'appliquent à l'ensemble des relevés. Étant donné que EXPLAIN ANALYZE VERBOSE les estimations sont fournies au niveau des relevés alors que la facturation applique des minimums au niveau des transactions, les valeurs peuvent ne pas correspondre exactement aux mesures ou aux 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 VERBOSE rapports 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 l'analyse asynchrone ou les compactages) et les frais de transaction (BEGIN/COMMIT) qui EXPLAIN ANALYZE VERBOSE sont intentionnellement exclus.

  • Testez avec des données représentatives pour valider les concepts : Lorsque vous exécutez une validation de concept pour évaluer les coûts, assurez-vous que vos tables contiennent des volumes de données et des distributions similaires à la charge de travail de production prévue. Les estimations du DPU, qu'elles soient basées sur CloudWatch des données EXPLAIN ANALYZE VERBOSE ou des indicateurs, basées sur des tableaux vides ou peu remplis ne refléteront pas les coûts réels.

  • 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é, les opérations en arrière-plan telles que l'analyse asynchrone 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 nombreuses petites instructions, envisagez de les regrouper en opérations d'écriture plus importantes au cours d'une seule transaction (les modifications ne doivent pas dépasser 10 Mo par transaction, bien que les lectures ne soient limitées que par le délai d'expiration de 5 minutes de la transaction). Cela permet d'amortir les minimums de transaction sur un plus grand nombre de travaux et de produire des estimations de coûts plus significatives.

  • À utiliser pour le réglage, pas pour la facturation : les données DPU entrées EXPLAIN ANALYZE VERBOSE sont 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.

Bonnes pratiques en matière d'estimation des coûts

  • Surveillez avant d'optimiser : utilisez CloudWatch des métriques pour comprendre votre modèle d'utilisation actuel avant de prendre des décisions d'optimisation. Pour en savoir plus, consultez Surveillance de l'utilisation du DPU avec CloudWatch.

  • Concentrez-vous sur l'efficacité des transactions : étant donné que des minimums s'appliquent au niveau des transactions, regroupez les opérations connexes afin d'amortir les frais minimaux.

  • Utilisez EXPLAIN ANALYZE VERBOSE pendant le développement : exécutez des requêtes critiques pendant EXPLAIN ANALYZE VERBOSE le développement pour comprendre leurs caractéristiques de coût. Lorsque vous exécutez une validation de principe pour évaluer les coûts, testez par rapport à des tables présentant des volumes de données et des distributions représentatifs. Les estimations basées sur des tables vides ou peu renseignées ne refléteront pas les coûts de production. Pour en savoir plus, consultez Utiliser EXPLAIN ANALYZE VERBOSE pour connaître les coûts.

  • Définissez des CloudWatch alarmes : créez des alarmes sur les métriques du DPU pour être averti des pics d'utilisation inattendus.