Contrôlez la consommation des tâches de calcul en paiement à l'utilisation en définissant des limites de ressources par instruction ou des plafonds de dépenses cumulées quotidiennes.
Fonctionnalités
Les ressources MaxCompute en paiement à l'utilisation s'adaptent de manière élastique sans limites prédéfinies sur l'utilisation des ressources. Pour éviter les coûts inattendus, MaxCompute propose les fonctionnalités de contrôle de la consommation suivantes :
|
Fonctionnalité |
Méthode de contrôle |
Description |
|
Limiter la consommation de ressources |
MaxCompute estime la consommation de ressources d'une instruction SQL avant son exécution. Si la consommation estimée dépasse un seuil prédéfini, l'instruction est bloquée et le système renvoie un statut d'échec ainsi qu'un message d'erreur. Cette fonctionnalité permet d'éviter qu'une seule instruction SQL n'engendre des coûts élevés. |
|
|
Alerte de coût |
Surveille la consommation cumulée quotidienne du SQL standard dans un projet. Si la somme de la consommation cumulée de la journée et de la consommation estimée d'une nouvelle instruction SQL dépasse le seuil prédéfini, la nouvelle instruction est bloquée. Le système renvoie un statut d'échec et un message d'erreur. Cette fonctionnalité permet d'éviter que la consommation quotidienne de SQL standard ne dépasse votre budget. Remarque
La consommation cumulée quotidienne de SQL fait uniquement référence à l'utilisation mesurée qui n'a pas encore été facturée. Elle ne tient pas compte des réductions ou des promotions. |
Limite de ressource par instruction
Configuration
Définissez une limite de ressource par instruction en utilisant l'une des méthodes suivantes :
-
Paramétrage au niveau du projet
Le propriétaire du projet ou un utilisateur disposant du rôle Super_Administrator doit exécuter la commande suivante pour activer ou désactiver la limite de ressource par instruction.
-- Enable the per-statement resource limit. SETPROJECT odps.sql.metering.value.max=<m_value>; -- Disable the per-statement resource limit. SETPROJECT odps.sql.metering.value.max;Le paramètre m_value correspond au seuil maximal de consommation pour une seule instruction SQL. Il est calculé selon la formule
SQL read volume (GB) × SQL complexityet ne représente pas un montant monétaire.RemarqueLa consommation par instruction d'un projet est limitée par m_value. Si la consommation estimée d'une instruction dépasse cette valeur m_value, le système bloque son exécution.
-
Paramétrage au niveau de la session
Pour activer une limite de ressource par instruction pour une seule exécution, soumettez la commande suivante accompagnée de votre instruction SQL. Si vous n'incluez pas cette commande, la limite est désactivée. Ce paramètre n'est valable que pour l'exécution en cours.
SET odps.sql.metering.value.max=<m_value>;
Recommandations
Suivez ces bonnes pratiques :
-
Définissez une valeur m_value au niveau du projet en vous basant sur la consommation historique de SQL et vos dépenses prévues.
Téléchargez les données détaillées de comptabilisation quotidiennes et calculez la consommation de ressources pour les tâches SQL (tâches dont la classification des données est ComputationSql) au niveau du projet. La consommation de ressources est calculée selon la formule
SQL read volume (GB) × SQL complexity. Déterminez une valeur appropriée en fonction de la consommation quotidienne normale la plus élevée, en tenant compte des fluctuations métier.Vous pouvez également convertir la consommation de calcul en coût . En fonction de vos besoins métier, déterminez un coût acceptable, puis convertissez ce coût en une valeur de consommation : .
-
Définissez d'abord une limite au niveau du projet, puis utilisez une limite m_value au niveau de la session pour des instructions SQL spécifiques et exceptionnelles.
RemarqueAvant de définir une limite au niveau de la session, assurez-vous que l'instruction SQL spécifique en a réellement besoin afin d'éviter toute utilisation abusive.
-
Si des limites sont définies à la fois au niveau du projet et au niveau de la session, la limite au niveau de la session est prioritaire.
Par exemple, si la valeur m_value d'un projet est définie sur 100, mais qu'une instruction SQL spécifique au sein de ce projet possède une valeur m_value de session de 200, l'instruction est bloquée uniquement si sa consommation estimée dépasse 200, et non 100. Les autres instructions SQL sans limite au niveau de la session respectent toujours la limite du projet de 100 et sont bloquées si leur consommation estimée dépasse 100.
La définition d'une limite au niveau du projet ou de la session affecte l'exécution des tâches. Utilisez ces limites conjointement avec une fonctionnalité d'alerte d'échec de tâche, telle que la surveillance intelligente de DataWorks, afin de détecter rapidement les échecs de tâches et d'intervenir manuellement. Cela permet d'éviter que des tâches critiques ne soient bloquées et n'impactent les opérations métier.
Plafond de dépenses cumulées quotidiennes
Configuration
Définissez un plafond de dépenses cumulées quotidiennes pour un projet en exécutant la commande suivante. Seul le propriétaire du projet ou un utilisateur disposant du rôle Super_Administrator peut exécuter cette commande.
SETPROJECT odps.costcontrol.rule={"byDate":{"sql":<Limit>}};
byDate : Définit une limite quotidienne. La consommation cumulée est calculée pour la période allant de 00:00:00 à 23:59:59 (UTC+8). Le compteur est réinitialisé le jour suivant.
-
Limit : Le seuil de dépenses cumulées quotidiennes pour le SQL standard dans le projet, exprimé en USD. Ce suivi de la consommation ne tient pas compte des réductions ou des promotions.
RemarqueCoût par instruction SQL = Volume de données analysées (Go) × Complexité × 0,0438. Dans la région Arabie saoudite (Riyad), opérée par un partenaire, le tarif de facturation du SQL standard est de 0,05256 USD/Go.
Remarques sur l'utilisation
Après avoir défini la limite, les règles suivantes s'appliquent :
|
Type de règle |
Comportement du système |
Exemple et recommandation |
|
Première configuration |
Le système accumule la consommation quotidienne totale de SQL standard dans le projet et estime la consommation des nouvelles instructions SQL standard soumises. |
Exemple : Lorsque vous définissez pour la première fois la limite au niveau du projet en exécutant |
|
Mise à jour d'une valeur existante |
Le système compare la nouvelle estimation de consommation avec la valeur accumulée et la nouvelle limite pour déterminer s'il faut bloquer la tâche. |
Supposons que la limite quotidienne initiale était de 100 et que la consommation cumulée actuelle est de 99. Vous modifiez la limite à 150, puis soumettez une nouvelle instruction SQL standard. Le système estime d'abord le coût de la nouvelle instruction SQL (par exemple, 20). Si la somme du coût estimé et de la consommation cumulée (20 + 99) est inférieure ou égale à 150, l'instruction SQL s'exécute. Sinon, elle est bloquée. |
|
La somme de la consommation cumulée quotidienne et estimée dépasse la Limit |
Le système empêche l'exécution de la nouvelle tâche SQL standard soumise et renvoie un message d'erreur. |
|