Gérer les ressources de calcul dans Azure SQL Data WarehouseManage compute in Azure SQL Data Warehouse

Découvrez comment gérer les ressources de calcul dans Azure SQL Data Warehouse.Learn about managing compute resources in Azure SQL Data Warehouse. Vous pouvez alléger les coûts en suspendant l’entrepôt de données, ou mettre à l’échelle ce dernier afin de répondre aux exigences en matière de niveau de performance.Lower costs by pausing the data warehouse, or scale the data warehouse to meet performance demands.

En quoi consiste la gestion des ressources de calcul ?What is compute management?

L’architecture de SQL Data Warehouse sépare le stockage du calcul, ce qui permet de les mettre à l’échelle indépendamment l’un de l’autre.The architecture of SQL Data Warehouse separates storage and compute, allowing each to scale independently. En conséquence, vous pouvez procéder à la mise à l’échelle du calcul afin de répondre aux exigences en matière de niveau de performance, sans modifier le stockage des données.As a result, you can scale compute to meet performance demands independent of data storage. Vous avez également la possibilité de suspendre ou reprendre des ressources de calcul.You can also pause and resume compute resources. Dans le cadre de cette architecture, la facturation du calcul est donc effectuée séparément de celle du stockage.A natural consequence of this architecture is that billing for compute and storage is separate. Si vous n’avez pas besoin d’utiliser votre entrepôt de données pendant un certain temps, vous pouvez alléger les coûts de calcul en suspendant les ressources de calcul.If you don't need to use your data warehouse for a while, you can save compute costs by pausing compute.

Mise à l’échelle du calculScaling compute

Vous pouvez procéder à la montée ou descente en puissance du calcul en ajustant le paramétrage relatif aux unités Data Warehouse Units (DWU) de votre entrepôt de données.You can scale out or scale back compute by adjusting the data warehouse units setting for your data warehouse. Les performances de chargement et de requête peuvent s’accroître de manière linéaire à mesure que vous augmentez la valeur DWU.Loading and query performance can increase linearly as you add more data warehouse units.

Pour plus d’informations sur la procédure de montée en puissance, consultez les articles de démarrage rapide pour le portail Azure, PowerShell ou T-SQL.For scale-out steps, see the Azure portal, PowerShell, or T-SQL quickstarts. Vous pouvez également effectuer des opérations de montée en puissance à l’aide d’une API REST.You can also perform scale-out operations with a REST API.

Pour procéder à une mise à l’échelle, le service SQL Data Warehouse commence par tuer toutes les requêtes entrantes, puis il restaure les transactions afin de garantir un état cohérent.To perform a scale operation, SQL Data Warehouse first kills all incoming queries and then rolls back transactions to ensure a consistent state. La mise à l’échelle ne se produit qu’une fois la restauration des transactions effectuée.Scaling only occurs once the transaction rollback is complete. Dans le cadre d’une opération de mise à l’échelle, le système détache la couche de stockage des nœuds de calcul, ajoute des nœuds de calcul, puis rattache la couche de stockage à la couche de calcul.For a scale operation, the system detaches the storage layer from the Compute nodes, adds Compute nodes, and then reattaches the storage layer to the Compute layer. Chaque entrepôt de données présente 60 distributions, qui sont réparties uniformément entre les nœuds de calcul.Each data warehouse is stored as 60 distributions, which are evenly distributed to the Compute nodes. L’ajout de nœuds de calcul augmente la puissance de calcul.Adding more Compute nodes adds more compute power. À mesure que le nombre de nœuds de calcul augmente, le nombre de distributions par nœud de calcul diminue, offrant ainsi davantage de puissance de calcul pour vos requêtes.As the number of Compute nodes increases, the number of distributions per compute node decreases, providing more compute power for your queries. De même, la diminution de la valeur DWU abaisse le nombre de nœuds de calcul, ce qui réduit les ressources de calcul pour les requêtes.Likewise, decreasing data warehouse units reduces the number of Compute nodes, which reduces the compute resources for queries.

Le tableau ci-après illustre l’évolution du nombre de distributions par nœud de calcul à mesure que la valeur DWU change.The following table shows how the number of distributions per Compute node changes as the data warehouse units change. La valeur DWU6000 fournit 60 nœuds de calcul et offre un niveau de performance de requête bien supérieur à celui de la valeur DWU100.DWU6000 provides 60 Compute nodes and achieves much higher query performance than DWU100.

Data Warehouse UnitsData warehouse units # de nœuds de calcul# of Compute nodes # de distributions par nœud# of distributions per node
100100 11 6060
200200 22 3030
300300 33 2020
400400 44 1515
500500 5.5 1212
600600 6.6 1010
1 0001000 1010 6.6
1 2001200 1212 5.5
1 5001500 1515 44
20002000 2020 33
30003000 3030 22
60006000 6060 11

Détermination du nombre d’unités DWU optimalFinding the right size of data warehouse units

Pour découvrir les avantages d’une montée en puissance en termes de niveau de performance, en particulier dans le cas des valeurs DWU les plus élevées, vous devez utiliser un jeu de données d’au moins 1 To.To see the performance benefits of scaling out, especially for larger data warehouse units, you want to use at least a 1-TB data set. Pour déterminer le nombre d’unités DWU idéal pour votre entrepôt de données, essayez d’effectuer une montée et une descente en puissance.To find the best number of data warehouse units for your data warehouse, try scaling up and down. Exécutez quelques requêtes avec différentes valeurs DWU après avoir chargé vos données.Run a few queries with different numbers of data warehouse units after loading your data. La mise à l’échelle étant rapide, vous pouvez essayer plusieurs niveaux de performances en une heure ou moins.Since scaling is quick, you can try various performance levels in an hour or less.

Recommandations en matière de recherche de la valeur DWU optimale :Recommendations for finding the best number of data warehouse units:

  • Si vous disposez d’un entrepôt de données en développement, commencez par sélectionner un nombre réduit d’unités DWU.For a data warehouse in development, begin by selecting a smaller number of data warehouse units. DW400 ou DW200 est un bon point de départ.A good starting point is DW400 or DW200.
  • Analysez les performances de votre application, en observant notamment le nombre d’unités DWU sélectionné.Monitor your application performance, observing the number of data warehouse units selected compared to the performance you observe.
  • Déterminez la mesure dans laquelle vous devez augmenter ou diminuer le nombre d’unités DWU à l’aide d’une mise à l’échelle linéaire.Assume a linear scale, and determine how much you need to increase or decrease the data warehouse units.
  • Continuez à effectuer des ajustements jusqu’à ce que vous atteigniez le niveau de performances requis par vos activités.Continue making adjustments until you reach an optimum performance level for your business requirements.

Quand procéder à une montée en puissanceWhen to scale out

Une montée en puissance par l’augmentation de la valeur DWU a une incidence sur les aspects des performances ci-après :Scaling out data warehouse units impacts these aspects of performance:

  • amélioration linéaire des performances du système pour les analyses, les agrégations et les instructions CTAS (Create Table As Select) ;Linearly improves performance of the system for scans, aggregations, and CTAS statements.
  • augmentation du nombre de processus de lecture et d’écriture pour le chargement de données ;Increases the number of readers and writers for loading data.
  • nombre maximal de requêtes simultanées et d’emplacements de concurrence.Maximum number of concurrent queries and concurrency slots.

Recommandations concernant les cas dans lesquels augmenter la valeur DWU :Recommendations for when to scale out data warehouse units:

  • Avant d’exécuter une opération de chargement ou de transformation de données importante, effectuez une montée en puissance afin que vos données soient disponibles plus rapidement.Before you perform a heavy data loading or transformation operation, scale out to make the data available more quickly.
  • Pendant les heures de pointe, procédez à une montée en puissance pour prendre en charge un nombre plus important de requêtes simultanées.During peak business hours, scale out to accommodate larger numbers of concurrent queries.

Que faire si la montée en puissance n’améliore pas les performances ?What if scaling out does not improve performance?

L’ajout d’unités DWU augmente le parallélisme.Adding data warehouse units increasing the parallelism. Si le travail est réparti uniformément entre les nœuds de calcul, ce surcroît de parallélisme accroît le niveau de performance des requêtes.If the work is evenly split between the Compute nodes, the additional parallelism improves query performance. Si la montée en puissance n’améliore pas votre niveau de performance, certaines raisons peuvent l’expliquer.If scaling out is not changing your performance, there are some reasons why this might happen. Il peut exister une asymétrie des données entre les distributions, ou il est possible que des requêtes introduisent un déplacement important des données.Your data might be skewed across the distributions, or queries might be introducing a large amount of data movement. Pour examiner les problèmes liés aux performances des requêtes, consultez l’article relatif à la résolution des problèmes de performances.To investigate query performance issues, see Performance troubleshooting.

Suspension et reprise du calculPausing and resuming compute

La suspension du calcul consiste à détacher la couche de stockage des nœuds de calcul.Pausing compute causes the storage layer to detach from the Compute nodes. Les ressources de calcul sont libérées de votre compte.The Compute resources are released from your account. Pendant la suspension du calcul, vous n’êtes pas facturé pour ce dernier.You are not charged for compute while compute is paused. La reprise du calcul rattache le stockage aux nœuds de calcul et réenclenche la facturation du calcul.Resuming compute reattaches storage to the Compute nodes, and resumes charges for Compute. Lorsque vous suspendez un entrepôt de données :When you pause a data warehouse:

  • Les ressources de calcul et de mémoire sont renvoyées dans le pool des ressources disponibles du centre de données.Compute and memory resources are returned to the pool of available resources in the data center
  • Les coûts de DWU sont nuls pendant toute la durée de la suspension.Data warehouse unit costs are zero for the duration of the pause.
  • Le stockage de données n’est pas affecté et vos données restent intactes.Data storage is not affected and your data stays intact.
  • SQL Data Warehouse annule toutes les opérations en cours d’exécution ou en file d’attente.SQL Data Warehouse cancels all running or queued operations.

Lorsque vous reprenez un entrepôt de données :When you resume a data warehouse:

  • SQL Data Warehouse acquiert les ressources de calcul et de mémoire correspondant à votre paramétrage DWU.SQL Data Warehouse acquires compute and memory resources for your data warehouse units setting.
  • Les frais de calcul concernant vos unités DWU vous sont de nouveau facturés.Compute charges for your data warehouse units resume.
  • Vos données deviennent disponibles.Your data becomes available.
  • Une fois que l’entrepôt de données est en ligne, vous devez redémarrer vos requêtes de charge de travail.After the data warehouse is online, you need to restart your workload queries.

Si vous souhaitez que votre entrepôt de données soit toujours accessible, envisagez de le réduire à sa taille minimale au lieu de le suspendre.If you always want your data warehouse accessible, consider scaling it down to the smallest size rather than pausing.

Pour plus d’informations sur les procédures de suspension et de reprise, consultez les articles de démarrage rapide pour le portail Azure ou pour PowerShell.For pause and resume steps, see the Azure portal, or PowerShell quickstarts. Vous pouvez également utiliser l’API REST de suspension ou l’API REST de reprise.You can also use the pause REST API or the resume REST API.

Vider les transactions avant la suspension ou la mise à l’échelleDrain transactions before pausing or scaling

Nous vous recommandons d’autoriser l’achèvement des transactions existantes avant d’initialiser une opération de suspension ou de mise à l’échelle.We recommend allowing existing transactions to finish before you initiate a pause or scale operation.

Lorsque vous suspendez ou mettez à l’échelle de votre SQL Data Warehouse, en arrière-plan, vos requêtes sont annulées lorsque vous lancez la requête de suspension de mise à l’échelle.When you pause or scale your SQL Data Warehouse, behind the scenes your queries are canceled when you initiate the pause or scale request. L’annulation d’une simple requête SELECT est une opération rapide et n’a quasiment aucun impact sur le temps nécessaire à la suspension ou à la mise à l’échelle de votre instance.Canceling a simple SELECT query is a quick operation and has almost no impact to the time it takes to pause or scale your instance. Toutefois, les requêtes transactionnelles, qui modifient vos données ou la structure des données, ne pourront peut-être pas s’arrêter rapidement.However, transactional queries, which modify your data or the structure of the data, may not be able to stop quickly. Par définition, les requêtes transactionnelles doivent être terminées dans leur intégralité ou annuler leurs modifications.Transactional queries, by definition, must either complete in their entirety or rollback their changes. L’annulation du travail effectué par une requête transactionnelle peut être aussi longue, voire plus, que la modification originale appliquée par la requête.Rolling back the work completed by a transactional query can take as long, or even longer, than the original change the query was applying. Par exemple, si vous annulez une requête qui supprimait des lignes et était en cours d’exécution depuis une heure, le système mettra peut-être une heure à insérer à nouveau les lignes supprimées.For example, if you cancel a query which was deleting rows and has already been running for an hour, it could take the system an hour to insert back the rows which were deleted. Si vous exécutez une suspension ou une mise à l’échelle pendant que les transactions sont en cours, votre suspension ou mise à l’échelle peut sembler très longue, car la suspension et la mise à l’échelle doivent attendre la fin de la restauration avant de se lancer.If you run pause or scaling while transactions are in flight, your pause or scaling may seem to take a long time because pausing and scaling has to wait for the rollback to complete before it can proceed.

Consultez aussi Transactions et Optimisation des transactions.See also Understanding transactions, and Optimizing transactions.

Automatisation de la gestion du calculAutomating compute management

Pour plus d’informations sur l’automatisation des opérations de gestion du calcul, consultez l’article décrivant comment gérer le calcul avec Azure Functions.To automate the compute management operations, see Manage compute with Azure functions.

L’exécution de chacune des opérations de montée en puissance, de suspension et de reprise peut nécessiter plusieurs minutes.Each of the scale-out, pause, and resume operations can take several minutes to complete. Si vous procédez à une mise à l’échelle, une suspension ou une reprise automatiques, nous vous recommandons d’implémenter une logique pour vous assurer que certaines opérations ont été effectuées avant d’exécuter une autre action.If you are scaling, pausing, or resuming automatically, we recommend implementing logic to ensure that certain operations have completed before proceeding with another action. La vérification de l’état de l’entrepôt de données au niveau de différents points de terminaison vous permet d’automatiser correctement de telles opérations.Checking the data warehouse state through various endpoints allows you to correctly implement automation of such operations.

Pour vérifier l’état de l’entrepôt de données, consultez les articles de démarrage rapide pour PowerShell ou T-SQL.To check the data warehouse state, see the PowerShell or T-SQL quickstart. Vous pouvez également vérifier l’état de l’entrepôt de données à l’aide d’une API REST.You can also check the data warehouse state with a REST API.

AutorisationsPermissions

La mise à l’échelle de l’entrepôt de données requiert les autorisations décrites dans ALTER DATABASE.Scaling the data warehouse requires the permissions described in ALTER DATABASE. La suspension et la reprise requièrent l’autorisation Collaborateur de base de données SQL, notamment Microsoft.Sql/servers/databases/action.Pause and Resume require the SQL DB Contributor permission, specifically Microsoft.Sql/servers/databases/action.

Étapes suivantesNext steps

Un autre aspect de la gestion des ressources de calcul concerne l’allocation de ressources de calcul différentes pour des requêtes spécifiques.Another aspect of managing compute resources is allocating different compute resources for individual queries. Pour plus d’informations, consultez l’article Classes de ressources pour la gestion des charges de travail.For more information, see Resource classes for workload management.