Hologres Serverless Computing vous facture les requêtes SQL gourmandes en ressources, telles que celles consommant beaucoup de CPU ou de mémoire, en fonction des ressources de calcul utilisées et du temps d'exécution. Cette rubrique explique comment consulter votre consommation de ressources et comprendre les détails de la facturation.
Facturation
La fonctionnalité Serverless Computing mesure l'utilisation des ressources pour chaque requête SQL en Unités de calcul par heure (CU·H). Le système calcule cette valeur en multipliant les ressources consommées par le temps d'exécution. La facturation est régularisée toutes les heures. Chaque heure, le système agrège l'utilisation de toutes les requêtes SQL exécutées sur Serverless Computing durant l'heure précédente et déduit les frais correspondants. Pour connaître les prix unitaires, reportez-vous à Présentation de la facturation.
La facturation de Serverless Computing a officiellement débuté le
1er juillet 2024(heure de Pékin). Veuillez consulter les informations ci-dessous pour surveiller votre consommation de ressources Serverless Computing et estimer votre facture. Si nécessaire, ajustez l'allocation des ressources de vos tâches afin d'éviter des coûts imprévus.Pour obtenir la liste des régions et zones où Serverless Computing est disponible, consultez Guide d'utilisation de Serverless Computing.
Les tables
hologres.hg_query_logethologres.hg_serverless_computing_query_logconservent les données des 30 derniers jours.
Seules les requêtes SQL terminées avec succès sont facturées. Les requêtes échouées n'engendrent aucun frais.
Interroger la consommation de ressources
À partir de Hologres V2.1.18, vous pouvez interroger la vue hologres.hg_serverless_computing_query_log pour calculer la consommation de ressources des tâches Serverless Computing et estimer les coûts selon la formule de facturation des ressources serverless. Pour plus d'informations sur les journaux de requêtes lentes, consultez Afficher et analyser les journaux de requêtes lentes.
Dans les versions antérieures à
Hologres V2.2.7, le journal des requêtes lentes enregistrait uniquement les tâches Serverless Computing réussies dont la durée d'exécution dépassait100ms, ainsi que toutes les tâches ayant échoué. À partir deHologres V2.2.7et des versions ultérieures, vous pouvez afficher toutes les tâches Serverless Computing.Étant donné que la facturation implique une agrégation des données et des conversions d'unités, de légères divergences peuvent apparaître entre les données des journaux et votre facture finale.
Permissions
Pour estimer la consommation de ressources et les coûts de Serverless Computing à partir du journal des requêtes lentes, vous devez disposer d'autorisations spécifiques. Les sections suivantes détaillent les permissions requises et les méthodes d'autorisation.
-
Interroger le volume de données analysées pour toutes les bases de données d'une instance
-
Option 1 : Accorder l'autorisation Superuser. La commande suivante accorde cette autorisation :
-- Replace "Alibaba Cloud account ID" with the actual username. For a RAM user, prepend the account ID with "p4_". ALTER USER "Alibaba Cloud account ID" SUPERUSER; -
Option 2 : Ajouter l'utilisateur au groupe d'utilisateurs pg_read_all_stats. Utilisez l'une des commandes suivantes en fonction de votre modèle d'autorisations :
RemarqueOutre l'autorisation Superuser, Hologres permet aux membres du groupe d'utilisateurs pg_read_all_stats de consulter le volume de données analysées pour toutes les bases de données. Si un utilisateur standard doit afficher tous les journaux, il peut demander à un Superuser de lui accorder cette autorisation et de l'ajouter au groupe.
GRANT pg_read_all_stats TO "Alibaba Cloud account ID"; -- For the expert permission model CALL spm_grant('pg_read_all_stats', 'Alibaba Cloud account ID'); -- For the simple permission model (SPM) CALL slpm_grant('pg_read_all_stats', 'Alibaba Cloud account ID'); -- For the schema-level simple permission model (SLPM)
-
-
Afficher le volume de données analysées pour la base de données actuelle
-
Activez le modèle d'autorisations simple (SPM) ou le modèle d'autorisations simple au niveau du schéma (SLPM) et ajoutez l'utilisateur au rôle db_admin. Le rôle db_admin peut afficher le volume de données analysées pour la base de données actuelle. Utilisez l'une des commandes suivantes pour accorder ce rôle.
CALL spm_grant('<db_name>_admin', 'Alibaba Cloud account ID'); -- For SPM CALL slpm_grant('<db_name>.admin', 'Alibaba Cloud account ID'); -- For SLPM Un utilisateur standard peut interroger le volume de données analysées pour les requêtes qu'il a exécutées dans la base de données actuelle sous son propre compte.
-
Pour plus d'informations sur les opérations de gestion des autorisations, consultez Présentation de la gestion des autorisations.
Consommation pour une seule requête SQL
Utilisez l'instruction SQL suivante pour interroger la consommation détaillée des ressources d'une tâche Serverless Computing.
SELECT
*,
queue_time_ms, -- The time a SQL query spends waiting in the Serverless Computing queue, in milliseconds (ms).
serverless_allocated_cores, -- The number of CUs actually allocated to the current SQL query by Serverless Computing.
serverless_resource_used_time_ms, -- The duration that the SQL query actually occupies Serverless Computing resources, in milliseconds (ms).
(serverless_allocated_cores::DECIMAL(38, 4)) * (serverless_resource_used_time_ms::DECIMAL(38, 4)) AS serverless_cums
FROM
hologres.hg_serverless_computing_query_log;
Consommation sur une plage de temps
Utilisez l'instruction SQL suivante pour interroger la consommation totale des ressources des tâches Serverless Computing réussies sur une plage de temps spécifiée.
SELECT
(SUM((serverless_allocated_cores::DECIMAL(38, 4)) * (serverless_resource_used_time_ms::DECIMAL(38, 4))) / 1000 / 60 / 60)::bigint AS serverless_cuh
FROM
hologres.hg_serverless_computing_query_log
WHERE
status = 'SUCCESS'
AND serverless_allocated_cores IS NOT NULL
AND serverless_resource_used_time_ms IS NOT NULL
AND query_end BETWEEN '2024-05-01 00:00:00+08'::timestamptz AND '2024-05-31 24:00:00+08'::timestamptz;-- Specify the time range.
Estimer la consommation de ressources
Si vous n'avez pas encore activé Serverless Computing mais souhaitez exécuter certaines requêtes SQL à l'aide de ressources serverless, commencez par les exécuter sur votre instance Hologres. La table système hologres.hg_query_log contient le champ cpu_time_ms qui vous permet de trouver le temps CPU consommé par la tâche SQL. Vous pouvez ensuite utiliser la formule cpu_time_ms / 1000 / 60 / 60 pour estimer approximativement la consommation si la même requête était exécutée avec des ressources serverless. La commande SQL pour interroger les informations cpu_time_ms est la suivante :
SELECT cpu_time_ms FROM hologres.hg_query_log WHERE query_id = 'xxx';
Les ressources de l'instance peuvent être affectées par d'autres charges de travail, tandis que les ressources serverless sont isolées. De plus, leurs capacités de ressources peuvent différer. Par conséquent, cette méthode ne fournit pas une estimation précise de la consommation des ressources serverless. Nous vous recommandons de sélectionner quelques tâches SQL clés et de suivre le Guide d'utilisation de Serverless Computing pour les tester directement avec des ressources serverless. Cela vous permet de mesurer la consommation réelle des ressources sans affecter les autres tâches de votre instance.
Surveiller les coûts et configurer des alertes
Définir une limite d'utilisation quotidienne
À partir de Hologres V3.1.5, vous pouvez utiliser SQL pour définir une limite quotidienne d'utilisation des ressources Serverless Computing. Seul un Superuser peut définir cette limite.
-- Set a limit for a database.
ALTER DATABASE <db_name> SET hg_serverless_computing_daily_max_cuh_usage_threshold = <value>;
-- Set a limit for a user.
ALTER USER <user_name> SET hg_serverless_computing_daily_max_cuh_usage_threshold = <value>;
-
Détails de la limite
La valeur par défaut est -1, ce qui signifie qu'aucune limite n'est définie.
L'unité est CU·H.
Hologres agrège et met à jour l'utilisation totale des ressources Serverless Computing pour l'instance actuelle toutes les 10 minutes. Par conséquent, l'application de la limite peut présenter un délai allant jusqu'à 10 minutes.
Avant d'exécuter une requête SQL, Hologres compare le total des ressources serverless utilisées aujourd'hui par l'instance avec la limite de ressources serverless définie pour l'utilisateur ou la base de données actuel(le). Si la limite est atteinte, la requête revient automatiquement à l'utilisation des ressources de calcul de l'instance. Si la limite n'est pas atteinte, la requête s'exécute normalement à l'aide des ressources serverless.
-
Hologres calcule l'utilisation quotidienne des ressources Serverless Computing en fonction du jour naturel dans le fuseau horaire par défaut de la base de données actuelle. Vous pouvez exécuter les commandes suivantes dans la même session pour interroger le fuseau horaire par défaut de la base de données actuelle.
-- Reset the time zone to avoid influence from the client or user's default time zone. RESET timezone; -- Query the default time zone of the current database. SHOW timezone;
-
Recommandations
Si vous utilisez régulièrement la fonctionnalité Hologres Serverless Computing, vous pouvez déterminer une limite d'utilisation quotidienne appropriée en interrogeant votre consommation de ressources sur une plage de temps spécifique.
Si vous n'avez jamais utilisé la fonctionnalité Hologres Serverless Computing, nous vous recommandons d'utiliser d'abord la fonctionnalité jusqu'à ce que votre charge de travail se stabilise. Ensuite, en fonction de vos modèles d'utilisation, décidez s'il convient de définir une limite d'utilisation quotidienne et déterminez une valeur appropriée.
Si vous ne souhaitez pas que les requêtes SQL reviennent aux ressources de calcul de l'instance lorsque la limite Serverless Computing est atteinte, vous pouvez exécuter la commande suivante pour les faire échouer immédiatement. Ce paramètre ne peut être défini que par un Superuser.
-- Set the parameter at the database level.
ALTER DATABASE <db_name> SET hg_serverless_computing_enable_fallback_when_exceed_cuh_threshold = false;
-- Set the parameter at the user level.
ALTER USER <user_name> SET hg_serverless_computing_enable_fallback_when_exceed_cuh_threshold = false;
La valeur par défaut est
true. Lorsque la limite est dépassée, les requêtes SQL reviennent automatiquement à l'utilisation des ressources de l'instance.Ce paramètre peut être défini sur
false. Si la limite est dépassée, la requête SQL échoue immédiatement et renvoie l'erreur suivante :serverless computing is not available due to exceeding cuh usage threshold, please adjust the threshold or trun off serverless computing for current query.
Analyse des coûts
Vous pouvez utiliser le module dans Expenses and Costs pour surveiller et analyser les coûts des ressources de calcul Hologres.
Connectez-vous à Expenses and Costs. Dans le volet de navigation de gauche, cliquez sur .
Sur la page Cost Analysis, dans la section située à droite, sélectionnez Billing Item. Ensuite, sélectionnez un Cost Type et une Time Granularity selon vos besoins.
Dans la zone Filter Conditions située à droite, sélectionnez l'élément Billing Item approprié en fonction de votre type de ressource spécifique.
Pour plus d'informations, consultez Cost Analysis.
Alertes de dépenses
Vous pouvez utiliser Alibaba Cloud Expenses and Costs pour gérer les budgets et définir des alertes pour les dépenses au paiement à l'utilisation de produits spécifiques dans certaines régions. Pour plus d'informations, consultez Expense Alerts.
Alertes sur la durée d'une requête SQL unique
Hologres prend en charge les métriques d'exécution pour Serverless Computing. Nous vous recommandons de créer des règles d'alerte adaptées à vos cas d'utilisation métier afin d'éviter des coûts imprévus.
Par exemple, pour la métrique Longest duration among running Serverless Computing queries, nous recommandons la règle d'alerte suivante :
Avertissement : « La « Longest duration among running Serverless Computing queries » est supérieure ou égale à 3 600 000 millisecondes pendant 5 périodes consécutives (1 période = 1 minute). »
Pour plus d'informations, consultez Bonnes pratiques de surveillance et d'alerte.
Rubriques connexes
Pour une présentation de la fonctionnalité Serverless Computing, consultez Serverless Computing.
Pour obtenir des instructions sur l'utilisation de la fonctionnalité Serverless Computing, consultez Guide d'utilisation de Serverless Computing.