Gestire le risorse di calcolo in Azure SQL Data WarehouseManage compute in Azure SQL Data Warehouse

Informazioni sulla gestione delle risorse di calcolo in Azure SQL Data Warehouse.Learn about managing compute resources in Azure SQL Data Warehouse. Ridurre i costi sospendendo il data warehouse o ridimensionare il data warehouse per soddisfare le esigenze in termini di prestazioni.Lower costs by pausing the data warehouse, or scale the data warehouse to meet performance demands.

Informazioni sulla gestione del calcoloWhat is compute management?

L'architettura di SQL Data Warehouse separa le risorse di archiviazione e calcolo consentendo a entrambe di eseguire il ridimensionamento in modo indipendente.The architecture of SQL Data Warehouse separates storage and compute, allowing each to scale independently. Di conseguenza, è possibile ridimensionare il calcolo per soddisfare le esigenze in termini di prestazioni indipendenti dall'archiviazione dei dati.As a result, you can scale compute to meet performance demands independent of data storage. È anche possibile sospendere e riprendere le risorse di calcolo.You can also pause and resume compute resources. Come conseguenza logica di questa architettura, la fatturazione per calcolo e archiviazione è separata.A natural consequence of this architecture is that billing for compute and storage is separate. Se non è necessario usare il data warehouse per un periodo di tempo, è possibile sospendere le funzioni di calcolo al fine di risparmiare i costi associati.If you don't need to use your data warehouse for a while, you can save compute costs by pausing compute.

Ridimensionamento delle risorse di calcoloScaling compute

È possibile applicare la scalabilità orizzontale o ridurre le risorse di calcolo modificando l'impostazione delle unità di data warehouse per il data warehouse in uso.You can scale out or scale back compute by adjusting the data warehouse units setting for your data warehouse. Le prestazioni di caricamento e relative alle query possono aumentare in modo lineare man mano che si aggiungono più unità di data warehouse.Loading and query performance can increase linearly as you add more data warehouse units.

Per le procedure per la scalabilità orizzontale, vedere le guide introduttive al portale di Azure, a PowerShell oppure a T-SQL.For scale-out steps, see the Azure portal, PowerShell, or T-SQL quickstarts. È anche possibile eseguire le operazioni di scalabilità orizzontale con un'API REST.You can also perform scale-out operations with a REST API.

Per eseguire un'operazione di ridimensionamento, SQL Data Warehouse interrompe prima tutte le query in ingresso e quindi esegue il rollback delle transazioni per garantire uno stato coerente.To perform a scale operation, SQL Data Warehouse first kills all incoming queries and then rolls back transactions to ensure a consistent state. Il ridimensionamento ha effetto solo quando il rollback della transazione è completato.Scaling only occurs once the transaction rollback is complete. Per un'operazione di ridimensionamento, il sistema disconnette il livello di archiviazione dai nodi di calcolo, aggiunge nodi di calcolo e quindi ricollega il livello di archiviazione a quello di calcolo.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. Ogni data warehouse viene archiviato come 60 distribuzioni, uniformemente distribuite ai nodi di calcolo.Each data warehouse is stored as 60 distributions, which are evenly distributed to the Compute nodes. L'aggiunta di più nodi di calcolo determina un aumento della potenza di calcolo.Adding more Compute nodes adds more compute power. Con l'aumento del numero di nodi di calcolo si riduce il numero di distribuzioni per ogni nodo di calcolo, con un conseguente incremento della potenza di calcolo per le query.As the number of Compute nodes increases, the number of distributions per compute node decreases, providing more compute power for your queries. In modo analogo, la diminuzione delle unità di data warehouse riduce il numero di nodi di calcolo e di conseguenza le risorse di calcolo per le query.Likewise, decreasing data warehouse units reduces the number of Compute nodes, which reduces the compute resources for queries.

La tabella seguente illustra come il numero di distribuzioni per nodo di calcolo si modifica in base alla modifica delle unità di data warehouse.The following table shows how the number of distributions per Compute node changes as the data warehouse units change. DWU6000 fornisce 60 nodi di calcolo e consente di ottenere prestazioni delle query molto più elevate di DWU100.DWU6000 provides 60 Compute nodes and achieves much higher query performance than DWU100.

Unità di data warehouseData warehouse units # di nodi di calcolo# of Compute nodes # di distribuzioni per nodo# of distributions per node
100100 11 6060
200200 22 3030
300300 33 2020
400400 44 1515
500500 55 1212
600600 66 1010
10001000 1010 66
12001200 1212 55
15001500 1515 44
20002000 2020 33
30003000 3030 22
60006000 6060 11

Ricerca delle dimensioni giuste delle unità di data warehouseFinding the right size of data warehouse units

Per ottenere vantaggi della scalabilità orizzontale in termini di prestazioni, in particolare per le unità di warehouse dati di dimensioni maggiori, è necessario usare un set di dati di almeno 1 TB.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. Per trovare la quantità di unità di data warehouse più adatta per il data warehouse in uso, provare ad aumentarne e a ridurne il numero.To find the best number of data warehouse units for your data warehouse, try scaling up and down. Dopo il caricamento dei dati, eseguire alcune query con numeri di unità di data warehouse diversi.Run a few queries with different numbers of data warehouse units after loading your data. Poiché il ridimensionamento è rapido, è possibile provare diversi livelli di prestazioni in un'ora o meno.Since scaling is quick, you can try various performance levels in an hour or less.

Indicazioni per la ricerca del numero di unità di data warehouse più adatto.Recommendations for finding the best number of data warehouse units:

  • Per un data warehouse in fase di sviluppo, iniziare selezionando un numero minore di unità di data warehouse.For a data warehouse in development, begin by selecting a smaller number of data warehouse units. Un buon punto di partenza è DW400 o DW200.A good starting point is DW400 or DW200.
  • Monitorare le prestazioni dell'applicazione, osservando il numero di unità di data warehouse selezionato rispetto alle prestazioni ottenute.Monitor your application performance, observing the number of data warehouse units selected compared to the performance you observe.
  • Presupporre una scalabilità lineare e determinare quanto è necessario aumentare o ridurre le unità di data warehouse.Assume a linear scale, and determine how much you need to increase or decrease the data warehouse units.
  • Continuare ad apportare modifiche finché non si raggiunge un livello di prestazioni ottimale per i propri requisiti aziendali.Continue making adjustments until you reach an optimum performance level for your business requirements.

Quando applicare la scalabilità orizzontaleWhen to scale out

L'aumento del numero di unità di data warehouse influisce sugli aspetti delle prestazioni indicati di seguito.Scaling out data warehouse units impacts these aspects of performance:

  • Aumento lineare delle prestazioni del sistema per analisi, aggregazione e istruzioni CTASLinearly improves performance of the system for scans, aggregations, and CTAS statements.
  • Aumento del numero di lettori e scrittori per il caricamento dei dati.Increases the number of readers and writers for loading data.
  • Numero massimo di query simultanee e slot di concorrenza.Maximum number of concurrent queries and concurrency slots.

Indicazioni per i momenti in cui è opportuno aumentare le unità di data warehouse.Recommendations for when to scale out data warehouse units:

  • Prima di eseguire un'operazione di caricamento o di trasformazione di dati con impatto elevato, applicare la scalabilità orizzontale per rendere disponibili i dati più rapidamente.Before you perform a heavy data loading or transformation operation, scale out to make the data available more quickly.
  • Durante le ore lavorative di maggiore picco, applicare la scalabilità orizzontale per gestire un numero maggiore di query simultanee.During peak business hours, scale out to accommodate larger numbers of concurrent queries.

Cosa accade se la scalabilità orizzontale non migliora le prestazioni?What if scaling out does not improve performance?

L'aggiunta di unità di data warehouse determina un aumento del parallelismo.Adding data warehouse units increasing the parallelism. Se il lavoro viene suddiviso in modo uniforme tra i nodi di calcolo, il maggiore parallelismo migliora le prestazioni delle query.If the work is evenly split between the Compute nodes, the additional parallelism improves query performance. Se la scalabilità orizzontale non modifica le prestazioni, i motivi possono essere diversi.If scaling out is not changing your performance, there are some reasons why this might happen. I dati potrebbero essere presenti in modo non uniforme tra le distribuzioni o le query potrebbero introdurre spostamenti dei dati in notevole quantità.Your data might be skewed across the distributions, or queries might be introducing a large amount of data movement. Per analizzare i problemi di prestazioni delle query, vedere Risoluzione dei problemi di prestazioni.To investigate query performance issues, see Performance troubleshooting.

Sospensione e ripresa del calcoloPausing and resuming compute

La sospensione del calcolo determina la disconnessione del livello di archiviazione dai nodi di calcolo.Pausing compute causes the storage layer to detach from the Compute nodes. Le risorse di calcolo vengono rilasciate dall'account dell'utente.The Compute resources are released from your account. Durante la sospensione del calcolo, non viene addebitato alcun costo correlato.You are not charged for compute while compute is paused. Alla ripresa del calcolo, l'archiviazione viene ricollegata ai nodi di calcolo e le spese di calcolo vengono nuovamente addebitate.Resuming compute reattaches storage to the Compute nodes, and resumes charges for Compute. La sospensione di un data warehouse provoca gli effetti seguenti:When you pause a data warehouse:

  • Le risorse di calcolo e memoria vengono restituite al pool di risorse disponibili nel data center.Compute and memory resources are returned to the pool of available resources in the data center
  • I costi delle unità di data warehouse sono pari a zero per la durata della sospensione.Data warehouse unit costs are zero for the duration of the pause.
  • L'archivio dati non è interessato e i dati rimangano invariati.Data storage is not affected and your data stays intact.
  • SQL Data Warehouse annulla tutte le operazioni in esecuzione o in coda.SQL Data Warehouse cancels all running or queued operations.

La ripresa di un data warehouse provoca gli effetti seguenti:When you resume a data warehouse:

  • SQL Data Warehouse acquisisce risorse di calcolo e memoria per le impostazioni delle unità di data warehouse.SQL Data Warehouse acquires compute and memory resources for your data warehouse units setting.
  • I costi di calcolo per le unità di data warehouse vengono nuovamente addebitati.Compute charges for your data warehouse units resume.
  • I dati diventano disponibili.Your data becomes available.
  • Dopo che il data warehouse è online, è necessario riavviare le query del carico di lavoro.After the data warehouse is online, you need to restart your workload queries.

Se si vuole che il data warehouse sia sempre accessibile, è opportuno ridurne al minimo le dimensioni anziché sospenderlo.If you always want your data warehouse accessible, consider scaling it down to the smallest size rather than pausing.

Per le procedure di sospensione e ripresa, vedere le guide introduttive al portale di Azure oppure a PowerShell.For pause and resume steps, see the Azure portal, or PowerShell quickstarts. È anche possibile usare l'API REST di sospensione o l'API REST di ripresa.You can also use the pause REST API or the resume REST API.

Scaricare le transazioni prima della sospensione o del ridimensionamentoDrain transactions before pausing or scaling

Prima di avviare un'operazione di sospensione o ridimensionamento, è consigliabile consentire il completamento delle transazioni esistenti.We recommend allowing existing transactions to finish before you initiate a pause or scale operation.

Quando si sospende o ridimensiona SQL Data Warehouse, dietro le quinte le query vengono annullate all'avvio di tale richiesta.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'annullamento di una semplice query SELECT è un'operazione rapida senza quasi alcun impatto sul tempo necessario per sospendere o ridimensionare l'istanza.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. Le query transazionali, che modificano i dati o la struttura dei dati, potrebbero tuttavia richiedere più tempo per l'arresto.However, transactional queries, which modify your data or the structure of the data, may not be able to stop quickly. Le query transazionali, per definizione, devono essere completate interamente oppure è necessario il rollback delle modifiche.Transactional queries, by definition, must either complete in their entirety or rollback their changes. Il rollback del lavoro svolto da una query transazionale può richiedere la stessa quantità di tempo, o anche maggiore, della modifica originale applicata dalla query.Rolling back the work completed by a transactional query can take as long, or even longer, than the original change the query was applying. Se, ad esempio, si annulla una query che sta eliminando righe e che è in esecuzione già da un'ora, potrebbe essere necessaria un'ora affinché il sistema inserisca di nuovo le righe che sono state eliminate.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. Se si sospende o si ridimensiona il servizio mentre sono in corso transazioni, potrebbe sembrare che l'operazione richieda molto tempo perché per la sospensione o il ridimensionamento è necessario attendere il completamento del rollback.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.

Vedere anche Informazioni sulle transazioni e Ottimizzazione delle transazioni.See also Understanding transactions, and Optimizing transactions.

Automazione della gestione del calcoloAutomating compute management

Per automatizzare le operazioni di gestione di calcolo, vedere Manage compute with Azure functions (Gestire il calcolo con Funzioni di Azure).To automate the compute management operations, see Manage compute with Azure functions.

Ogni operazione di scalabilità orizzontale, sospensione e ripresa può richiedere alcuni minuti.Each of the scale-out, pause, and resume operations can take several minutes to complete. Se queste operazioni vengono eseguite automaticamente, è consigliabile implementare la logica necessaria per garantire che determinate operazioni siano completate prima di procedere con un'altra azione.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 verifica dello stato del data warehouse tramite vari endpoint consente di implementare correttamente l'automazione di tali operazioni.Checking the data warehouse state through various endpoints allows you to correctly implement automation of such operations.

Per verificare lo stato del data warehouse, vedere le guide introduttive a PowerShell oppure a T-SQL.To check the data warehouse state, see the PowerShell or T-SQL quickstart. È anche possibile verificare lo stato del data warehouse con un'API REST.You can also check the data warehouse state with a REST API.

AutorizzazioniPermissions

Il ridimensionamento del database richiede le autorizzazioni descritte in ALTER DATABASE.Scaling the data warehouse requires the permissions described in ALTER DATABASE. La sospensione e la ripresa richiedono l'autorizzazione Collaboratore Database SQL, in particolare Microsoft.Sql/servers/databases/action.Pause and Resume require the SQL DB Contributor permission, specifically Microsoft.Sql/servers/databases/action.

Passaggi successiviNext steps

Un altro aspetto della gestione delle risorse di calcolo è l'allocazione di risorse diverse per ogni singola query.Another aspect of managing compute resources is allocating different compute resources for individual queries. Per altre informazioni, vedere Classi di risorse per la gestione del carico di lavoro.For more information, see Resource classes for workload management.