Événements
31 mars, 23 h - 2 avr., 23 h
L’événement de la communauté Microsoft Fabric, Power BI, SQL et AI ultime. 31 mars au 2 avril 2025.
Inscrivez-vous aujourd’huiCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Cet article explique comment estimer et gérer les coûts d’un pool SQL serverless dans Azure Synapse Analytics :
Il est important de comprendre que les coûts d’un pool SQL serverless dans Azure Synapse Analytics ne représentent qu’une partie des coûts mensuels qui apparaissent sur votre facture Azure. Si vous utilisez d’autres services Azure, vous êtes facturé pour tous les services et ressources Azure utilisés dans votre abonnement Azure, y compris les services tiers. Cet article explique comment planifier et gérer les coûts d’un pool SQL serverless dans Azure Synapse Analytics.
Les données traitées correspondent à la quantité de données stockées temporairement par le système pendant l’exécution d’une requête. Elles se composent des quantités suivantes :
La lecture des fichiers à partir du stockage est hautement optimisée. Plusieurs techniques sont utilisées dans le processus :
L’optimiseur de requête du pool SQL serverless s’appuie sur des statistiques pour générer des plans optimaux d’exécution des requêtes. Il est possible de créer manuellement ces statistiques. Dans le cas contraire, le pool SQL serverless s’en charge automatiquement. Dans les deux cas, les statistiques sont créées en exécutant une requête distincte qui retourne une colonne spécifique suivant l’échantillonnage fourni. La quantité de données associée à cette requête est traitée.
Si vous exécutez la même requête ou une autre à laquelle seraient utiles les statistiques créées, ces dernières sont réutilisées dans la mesure du possible. Aucune donnée supplémentaire n’est traitée pour la création de statistiques.
Lorsque des statistiques sont créées pour une colonne Parquet, seule la colonne appropriée est lue dans les fichiers. Lorsque des statistiques sont créées pour une colonne CSV, les fichiers sont lus et analysés en totalité.
La quantité de données traitées est arrondie au volume de Mo le plus proche par requête. Chaque requête comporte au minimum 10 Mo de données traités.
Il est possible d’optimiser la quantité de données traitées par requête et d’améliorer le niveau de performance en partitionnant et convertissant les données dans un format compressé en colonnes comme Parquet.
Prenons trois tables.
Requête 1 : SELECT SUM(population) FROM population_csv
Cette requête lit et analyse les fichiers entiers pour obtenir les valeurs de la colonne population. Les nœuds traitent les fragments de cette table, et la somme de population pour chaque fragment est transférée entre les nœuds. La somme finale est transmise à votre point de terminaison.
Cette requête traite 5 To de données, plus une petite quantité supplémentaire pour transférer les sommes des fragments.
Requête 2 : SELECT SUM(population) FROM population_parquet
Lorsque vous interrogez des formats compressés en colonnes comme Parquet, la quantité de données lues est inférieure par rapport à la requête 1. En effet, le pool SQL serverless lit une seule colonne compressée, et non l’intégralité du fichier. Dans ce cas, 0,2 To de données sont lues. (Les cinq colonnes de taille identique font 0,2 To chacune.) Les nœuds traitent les fragments de cette table, et la somme de population pour chaque fragment est transférée entre les nœuds. La somme finale est transmise à votre point de terminaison.
Cette requête traite 0,2 To, plus une petite quantité supplémentaire pour transférer les sommes des fragments.
Requête 3 : SELECT * FROM population_parquet
Cette requête lit toutes les colonnes et transfère toutes les données dans un format non compressé. Si le format de compression est 5:1, la requête traite 6 To, car elle lit 1 To et transfère 5 To de données non compressées.
Requête 4 : SELECT COUNT(*) FROM very_small_csv
Cette requête lit des fichiers entiers. La taille totale des fichiers dans le stockage de cette table est de 100 Ko. Les nœuds traitent les fragments de cette table, et la somme pour chaque fragment est transférée entre les nœuds. La somme finale est transmise à votre point de terminaison.
Cette requête traite légèrement plus de 100 Ko de données. La quantité de données traitées pour cette requête est arrondie à 10 Mo (cf. section Arrondi de cet article).
La fonctionnalité de contrôle des coûts dans un pool SQL serverless permet de définir le budget adapté à la quantité de données traitées. Ce budget peut être défini en To de données traitées pour une journée, une semaine et un mois. Il est possible de disposer de plusieurs budgets simultanément. Pour configurer le contrôle des coûts d’un pool SQL serverless, vous pouvez utiliser Synapse Studio ou T-SQL.
Pour configurer le contrôle des coûts d’un pool SQL serverless dans Synapse Studio, accédez à l’élément Gérer dans le menu de gauche, puis sélectionnez l’élément Pools SQL sous Pools d’analytique. Lorsque vous pointez sur le pool SQL serverless, une icône de contrôle des coûts apparaît. Cliquez dessus.
Lorsque vous cliquez sur l’icône de contrôle des coûts, un encadré s’affiche :
Pour définir un ou plusieurs budgets, commencez par cliquer sur la case d’option Activer de l’un deux, puis entrez la valeur entière dans la zone de texte. Cette valeur est exprimée en To. Une fois que vous avez configuré les budgets souhaités, cliquez sur le bouton Appliquer en bas de l’encadré. Votre budget est maintenant défini.
Pour configurer le contrôle des coûts d’un pool SQL serverless dans T-SQL, vous devez exécuter une ou plusieurs des procédures stockées suivantes.
sp_set_data_processed_limit
@type = N'daily',
@limit_tb = 1
sp_set_data_processed_limit
@type= N'weekly',
@limit_tb = 2
sp_set_data_processed_limit
@type= N'monthly',
@limit_tb = 3334
Pour afficher la configuration actuelle, exécutez l’instruction T-SQL suivante :
SELECT * FROM sys.configurations
WHERE name like 'Data processed %';
Pour voir quelle quantité de données a été traitée au cours de la journée, de la semaine ou du mois en cours, exécutez l’instruction T-SQL suivante :
SELECT * FROM sys.dm_external_data_processed
Dans le cas où une limite est dépassée pendant l’exécution de la requête, la requête ne se termine pas.
Quand la limite est dépassée, la nouvelle requête est rejetée avec le message d’erreur qui contient les détails relatifs à la période et à la limite définie pour cette période, ainsi que les données traitées pour cette période. Le message d’erreur est le suivant par exemple en cas d’exécution d’une nouvelle requête, quand la limite hebdomadaire est définie sur 1 To et qu’elle a été dépassée :
Query is rejected because SQL Serverless budget limit for a period is exceeded. (Period = Weekly: Limit = 1 TB, Data processed = 1 TB))
Pour savoir comment optimiser le niveau de performance de vos requêtes, consultez Meilleures pratiques pour le pool SQL serverless.
Événements
31 mars, 23 h - 2 avr., 23 h
L’événement de la communauté Microsoft Fabric, Power BI, SQL et AI ultime. 31 mars au 2 avril 2025.
Inscrivez-vous aujourd’hui