Passer au contenu

Comment calculer les frais de requête Amazon Redshift Spectrum ?

Lecture de 7 minute(s)
0

Je souhaite calculer et optimiser les coûts lorsque j'utilise Amazon Redshift Spectrum pour interroger les données Amazon Simple Storage Service (Amazon S3).

Brève description

Prérequis :

  • Un cluster Amazon Redshift et un compartiment S3 situés dans la même région AWS.
  • Un client SQL connecté à votre cluster pour exécuter des commandes SQL.

Le nombre d'octets que Redshift Spectrum analyse depuis Amazon S3 vous est facturé. Des frais supplémentaires peuvent vous être facturés en fonction de la région. Redshift Spectrum arrondit les nombres d'octets au mégaoctet suivant, avec un minimum de 10 Mo par requête. Pour plus d’informations, consultez la section Tarification Amazon Redshift.

Remarque : Redshift Spectrum ne facture pas les instructions du langage de définition des données (DDL), CREATE, ALTER et DROP TABLE, qui gèrent les partitions et les requêtes ayant échoué. Vos frais de capacité de calcul Amazon Redshift Serverless incluent toutes les requêtes de données externes Amazon S3.

Résolution

Pour calculer le coût estimé des requêtes et obtenir un résumé de toutes les requêtes S3 que vous exécutez dans Redshift Spectrum, utilisez la table SVL_S3QUERY_SUMMARY. La colonne s3_scanned_bytes renvoie le nombre d'octets que Redshift Spectrum analyse depuis S3 et envoie à la couche Redshift Spectrum.

Utilisation

Exécutez la requête suivante sur SVL_S3QUERY_SUMMARY pour déterminer le nombre d'octets qu'Amazon S3 transfère par queryID :

SELECT s3_scanned_bytes
FROM SVL_S3QUERY_SUMMARY
WHERE query=queryID;

Remarque : Remplacez queryID par l'ID de votre requête.

Pour déterminer la somme de tous les octets analysés depuis S3, exécutez la requête suivante :

SELECT sum(s3_scanned_bytes)
FROM SVL_S3QUERY_SUMMARY;

Vous pouvez également déterminer la somme des octets pour toutes les requêtes Redshift Spectrum que vous exécutez dans un intervalle de temps spécifique. L'exemple suivant montre comment calculer le nombre total d'octets à partir de requêtes que vous avez commencé à exécuter la veille :

SELECT sum(s3_scanned_bytes)
FROM SVL_S3QUERY_SUMMARY
WHERE starttime >= current_date-1;

Si vous exécutez la requête suivante sur un compartiment S3 dans la région USA Est (Virginie du Nord), Redshift Spectrum facture par téraoctet. Si la somme de s3_scanned_bytes renvoie 621 900 000 000 octets lorsque vous interrogez SVL_S3QUERY_SUMMARY, vous avez 0,565614755032584 téraoctets lorsque vous convertissez des octets en téraoctets.

Exemple de requête :

621900000000 bytes = 621900000000/1024 = 607324218.75 kilobytes
607324218.75 kilobytes = 607324218.75/1024 =  593090.057373046875 megabytes
593090.057373046875  megabytes =  593090.057373046875 /1024 = 579.189509153366089 gigabytes
579.189509153366089  gigabytes =  579.189509153366089/1024 = 0.565614755032584 terabytes

Dans l'exemple suivant, votre utilisation est d'environ 0,5657 téraoctet. Pour calculer le coût d'utilisation du spectre Redshift, multipliez le coût par téraoctet :

$5 * 0.5657= $2.83

Exécutez la requête SQL suivante pour calculer les frais d'utilisation de Redshift Spectrum :

SELECT
   round(1.0*sum(s3_scanned_bytes/1024/1024/1024/1024),4) s3_scanned_tb,
   round(1.0*5*sum(s3_scanned_bytes/1024/1024/1024/1024),2) cost_in_usd
FROM SVL_S3QUERY_SUMMARY;

L'exemple précédent interroge les frais dans Redshift Spectrum par rapport à votre compartiment S3 pour rechercher les données que la requête a analysées la veille.

Remarque : Toutes les requêtes qui analysent jusqu'à 9,9 Mo sont arrondies et facturées 10 Mo. Aucun frais n’est facturé pour les requêtes échouées ou interrompues.

En outre, les tables de journalisation du système (STL) ne conservent que 2 à 5 jours d'historique de journaux, en fonction de l'utilisation des journaux et de l'espace disque disponible. Pour conserver une trace des octets transférés, il est recommandé de calculer les frais de requête quotidiens et de stocker les données dans une autre table.

Exemple de requête :

CREATE VIEW spectrum_cost AS
SELECT starttime::date as date, xid, query, trim(usename) as user,
  CASE WHEN s3_scanned_bytes < 10000000 then 10 ELSE s3_scanned_bytes/1024/1024 end as scanned_mb,
  round(CASE WHEN s3_scanned_bytes < 10000000 then 10*(5.0/1024/1024)
  ELSE (s3_scanned_bytes/1024/1024)*(5.0/1024/1024) end,5) as cost_$
FROM svl_s3query_summary s
LEFT JOIN pg_user u ON userid=u.usesysid
JOIN
(select xid as x_xid,max(aborted) as x_aborted from svl_qlog group by xid) q
ON s.xid=q.x_xid
WHERE userid>1 AND x_aborted=0
AND s.starttime >= current_date-1;

Remarque : Vous pouvez également utiliser la requête CREATE TABLE pour calculer et stocker les données dans une autre table. Si vous ne souhaitez pas spécifier de période, supprimez current_date-1.

Calculez la somme totale des données qu'une requête analyse depuis S3 vers Redshift Spectrum la veille. Pour calculer l'estimation totale des frais, exécutez la requête suivante :

SELECT current_date-1 as query_since, SUM(scanned_mb) as total_scanned_mb, SUM(cost_$) as total_cost_$
FROM spectrum_cost;
Result:
  query_since | total_scanned_mb | total_cost_$
--------------+------------------+---------------
 2020-05-15   |            5029  |      0.02515

Bonnes pratiques relatives à Redshift Spectrum

Pour réduire les frais de requête et améliorer les performances de Redshift Spectrum, appliquez les bonnes pratiques suivantes :

  • Utilisez le contrôle des coûts pour Redshift Spectrum et les fonctionnalités de mise à l'échelle de la simultanéité pour surveiller et contrôler votre utilisation.
  • Utilisez des formats de données optimisés pour améliorer les performances et réduire les coûts. Utilisez des formats de données en colonnes tels que PARQUET et ORC pour sélectionner uniquement les colonnes que vous souhaitez analyser depuis Amazon S3.
  • Si vous accédez rarement aux données, chargez-les dans Amazon S3 et utilisez Redshift Spectrum.
  • Lorsque vous utilisez plusieurs clusters Amazon Redshift pour augmenter la simultanéité, arrêtez les clusters dès que les tâches sont terminées.

Contrôle des coûts et mise à l'échelle de la simultanéité pour Redshift Spectrum

Si vous utilisez la fonction de contrôle des coûts et de mise à l'échelle de la simultanéité pour Redshift Spectrum, vous pouvez créer des quotas d'utilisation quotidiens, hebdomadaires et mensuels. Lorsque vous atteignez les quotas d'utilisation, Amazon Redshift prend automatiquement des mesures.

Pour configurer le contrôle des coûts, procédez comme suit :

  1. Ouvrez la console Amazon Redshift.
  2. Choisissez Configurer la limite d'utilisation.
  3. Mettez à jour les paramètres de configuration suivants :
    Période
    Limite d'utilisation
    Action
    Remarque : Les paramètres d’action peuvent vous aider à gérer vos quotas d'utilisation.

Pour configurer le quota d'utilisation de la mise à l'échelle de la simultanéité, procédez comme suit :

  1. Ouvrez la console Amazon Redshift.
  2. Choisissez la limite d'utilisation de la mise à l'échelle de la simultanéité comme quota d'utilisation.
  3. Mettez à jour les paramètres de configuration suivants :
    Période
    Limite d'utilisation
    Action
    Remarque : La période se situe dans le fuseau horaire UTC. Pour le paramètre Action, vous pouvez également associer un abonnement Amazon Simple Notification Service (Amazon SNS) aux fonctionnalités Alerte et Désactiver. Si vous utilisez la console Amazon Redshift pour activer une alerte, une alarme Amazon CloudWatch est automatiquement créée pour les métriques.

Exigences et limites supplémentaires en matière de contrôle des coûts

Pour gérer l'utilisation et les coûts de Redshift Spectrum, examinez les exigences et limites suivantes :

  • Les quotas d'utilisation sont disponibles avec les versions 1.0.14677 ou ultérieures prises en charge.
  • Vous pouvez ajouter jusqu'à quatre quotas et actions pour chaque catégorie avec un quota total de huit.
  • Seules les régions où Redshift Spectrum et la mise à l'échelle de la simultanéité sont disponibles prennent en charge Redshift Spectrum.
  • Un seul quota par fonctionnalité peut utiliser la fonctionnalité Désactiver.
  • Les quotas d'utilisation sont maintenus jusqu'à ce que vous supprimiez la définition du quota d'utilisation ou le cluster.
  • Si vous créez un quota au milieu d'une période, celui-ci est mesuré du milieu à la fin de la période.
  • Si vous choisissez des options de journalisation, consultez les informations contenues dans les journaux STL_USAGE_CONTROL.

Informations connexes

Définition des limites d'utilisation, y compris définition des limites du RPU

SVL_QLOG

Référence des tables et des vues du système

Bonnes pratiques pour Amazon Redshift Spectrum

AWS OFFICIELA mis à jour il y a un an