Tous les produits
Search
Centre de documentation

MaxCompute:Contrôle de la consommation

Dernière mise à jour :Aug 10, 2026

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

Limite de ressource par instruction

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.

Plafond de dépenses cumulées quotidiennes

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 complexity et ne représente pas un montant monétaire.

    Remarque

    La 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.

    Remarque
    • Avant 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.

    Remarque

    Coû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 SETPROJECT odps.costcontrol.rule={"byDate":{"sql":100}};, le système commence à accumuler le total quotidien et à estimer le coût des nouvelles tâches.

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.

  • Exemple d'erreur :

    Après avoir défini une limite de consommation à l'aide de la commande setproject odps.costcontrol.rule={"byDate":{"sql":100}};, si la consommation cumulée quotidienne de SQL standard dans le projet dépasse la limite, la tâche échoue avec l'erreur suivante :

    Exceed Cost Limit : 
    {"AlreadyCost":"100.1","InstanceId":"xxx","Limit":"100","Project":"xxx","TaskType":"SQL","ThisTaskWillCost":"0","TimeWindow":"BYDATE"}
  • Recommandation :

    Utilisez cette fonctionnalité conjointement avec une fonction d'alerte d'échec de tâche, telle que la surveillance intelligente de DataWorks, afin d'être notifié rapidement des échecs de tâches. Cela vous permet d'intervenir manuellement et d'éviter que des tâches critiques ne soient bloquées et n'impactent votre activité.