Unità Data Warehouse (DWU) per il pool SQL dedicato (in precedenza SQL Data Warehouse) in Azure Synapse Analytics

Questo documento contiene raccomandazioni sulla scelta del numero ideale di Unità Data Warehouse (DWU) per il pool SQL dedicato (in precedenza SQL Data Warehouse) per ottimizzare i prezzi e le prestazioni e su come modificare il numero di unità.

Che cosa sono le unità Data Warehouse?

Un pool SQL dedicato (in precedenza SQL Data Warehouse) rappresenta una raccolta di risorse analitiche di cui viene effettuato il provisioning. Le risorse di analisi sono definite come una combinazione di CPU, memoria e I/O.

Queste tre risorse sono aggregate in unità di calcolo note come unità Data Warehouse (DWU). Un'unità Data Warehouse rappresenta una misura astratta e normalizzata delle risorse e delle prestazioni di calcolo.

Cambiando il livello di servizio si modifica il numero di DWU disponibili per il sistema, regolandone di conseguenza le prestazioni e il costo.

Per prestazioni più elevate, è possibile aumentare il numero di unità Data Warehouse. Per prestazioni inferiori, ridurre le unità Data Warehouse. Poiché i costi di archiviazione e calcolo vengono fatturati separatamente, la modifica delle unità Data Warehouse non influisce sui costi di archiviazione.

Le prestazioni per le unità Data Warehouse sono basate su queste metriche per il carico di lavoro del data warehouse:

  • A quale velocità una query di pool SQL dedicato (in precedenza SQL Data Warehouse) può analizzare un numero elevato di righe e quindi eseguire un'aggregazione complessa? Questa è un'operazione con uso intensivo di I/O e CPU.
  • A quale velocità il pool SQL dedicato (in precedenza SQL Data Warehouse) è in grado di inserire dati dai BLOB del servizio di archiviazione di Azure o da Azure Data Lake? Questa è un'operazione con uso intensivo di rete e CPU.
  • A quale velocità il comando T-SQL CREATE TABLE AS SELECT può copiare una tabella? Questa operazione comporta la lettura dei dati dall'archiviazione, la relativa distribuzione tra tutti i nodi dell'appliance e la riscrittura nella risorsa di archiviazione. È un'operazione con uso intensivo di CPU, I/O e rete.

L'aumento delle DWU:

  • Modifica in modo lineare le prestazioni del sistema per le analisi, l'aggregazione e le istruzioni CTAS
  • Aumenta il numero di lettori e writer per operazioni di caricamento di PolyBase
  • Aumenta il numero massimo di query simultanee e slot di concorrenza

Service Level Objective

L'obiettivo del livello di servizio (SLO) è l'impostazione di scalabilità che determina il livello di costi e prestazioni del pool SQL dedicato (in precedenza SQL Data Warehouse). I livelli di servizio per il pool SQL dedicato (in precedenza SQL Data Warehouse) Gen2 sono misurati in Unità Data Warehouse (DWU), ad esempio DW2000c.

Nota

Il pool SQL dedicato (in precedenza SQL Data Warehouse) Gen2 ha di recente aggiunto funzionalità di scalabilità aggiuntive per supportare livelli di calcolo minimo di DW100c. I data warehouse esistenti attualmente su Gen1 che richiedono i livelli di calcolo più bassi possono ora eseguire l'aggiornamento a Gen2 nelle aree attualmente disponibili senza costi aggiuntivi. Se la propria area non è ancora supportata, è comunque possibile eseguire l'aggiornamento a un'area supportata. Per altre informazioni, vedere Aggiornamento a Gen2.

In T-SQL l'impostazione SERVICE_OBJECTIVE determina il livello di servizio e il livello di prestazioni per il pool SQL dedicato (in precedenza SQL Data Warehouse).

CREATE DATABASE mySQLDW
(Edition = 'Datawarehouse'
 ,SERVICE_OBJECTIVE = 'DW1000c'
)
;

Livelli di prestazioni e unità Data Warehouse

Ogni livello di prestazioni usa un'unità di misura leggermente diversa per le unità Data Warehouse. Questa differenza si rispecchia nella fattura, dato che l'unità di scala ha una corrispondenza diretta nella fatturazione.

  • I data warehouse di prima generazione sono misurati in unità data warehouse (DWU a elevato utilizzo di calcolo).
  • I data warehouse di seconda generazione sono misurati in unità di calcolo data warehouse (DWU a elevato utilizzo di calcolo).

Sia le unità DWU che le unità cDWU supportano l'aumento o la riduzione delle risorse di calcolo, oltre alla sospensione delle operazioni di calcolo quando non è necessario usare il data warehouse. Queste operazioni sono tutte su richiesta. La seconda generazione usa anche una cache basata su disco locale nei nodi di calcolo per migliorare le prestazioni. Quando si ridimensiona o si sospende il sistema, la cache viene invalidata ed è quindi necessario un periodo di aggiornamento della cache prima di ottenere prestazioni ottimali.

Limiti capacità

Ogni server SQL (ad esempio, myserver.database.windows.net) ha una quota di unità di transazione di database (DTU) che consente un numero specifico di unità di data warehouse. Per altre informazioni, vedere i limiti della capacità di gestione del carico di lavoro.

Quante unità Data Warehouse sono necessarie?

Il numero ideale di unità Data Warehouse dipende molto dal carico di lavoro e dalla quantità di dati che sono stati caricati nel sistema.

Procedure per individuare l'impostazione DWU ottimale per il carico di lavoro:

  1. Iniziare selezionando un'unità data warehouse più piccola.

  2. Monitorare le prestazioni dell'applicazione durante il caricamento dei dati di test nel sistema, osservando il numero di DWU selezionato in relazione alle prestazioni rilevate. Verificare monitorando l'utilizzo delle risorse.

  3. Identificare eventuali requisiti aggiuntivi per i periodici periodi di punta delle attività. Potrebbe essere necessario ridimensionare spesso i carichi di lavoro che mostrano picchi e cali significativi nell'attività.

Il pool SQL dedicato (in precedenza SQL Data Warehouse) è un sistema con scalabilità orizzontale che supporta il provisioning di enormi quantità di dati adattabili alle esigenze di calcolo e query.

Per verificare le effettive capacità nell'ottica della scalabilità, in particolare per le maggiori quantità di DWU, è consigliabile ridimensionare il set di dati durante gli interventi di scalabilità per assicurarsi che siano disponibili dati sufficienti per le CPU. Per i test di scalabilità è consigliabile usare almeno 1 TB.

Nota

Le prestazioni delle query aumentano con maggiore parallelizzazione solo se il lavoro può essere suddivise tra i nodi di calcolo. Se si riscontra che gli interventi di scalabilità non hanno effetti sulle prestazioni, potrebbe essere necessario ottimizzare la progettazione delle tabelle e/o le query. Per informazioni sull'ottimizzazione delle query, vedere Gestire le query utente.

Autorizzazioni

Per modificare le unità Data Warehouse sono necessarie le autorizzazioni descritte in ALTER DATABASE.

I ruoli predefiniti di Azure, ad esempio Collaboratore database SQL e Collaboratore SQL Server, possono modificare le impostazioni DWU.

Visualizzare le impostazioni DWU correnti

Per visualizzare l'impostazione corrente per le unità DWU:

  1. Aprire Esplora oggetti di SQL Server in Visual Studio.
  2. Connettersi al database master associato al server SQL logico.
  3. Effettuare una selezione nella vista a gestione dinamica sys.database_service_objectives. Ecco un esempio:
SELECT  db.name [Database]
,        ds.edition [Edition]
,        ds.service_objective [Service Objective]
FROM    sys.database_service_objectives   AS ds
JOIN    sys.databases                     AS db ON ds.database_id = db.database_id
;

Modificare le unità Data Warehouse

Azure portal

Per cambiare il numero di DWU:

  1. Aprire il portale di Azure, aprire il database e quindi fare clic su Ridimensiona.

  2. In Ridimensiona spostare il dispositivo di scorrimento verso sinistra o destra per modificare l'impostazione delle DWU.

  3. Fare clic su Salva. Viene visualizzato un messaggio di conferma. Fare clic su per confermare o su No per annullare.

PowerShell

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Per cambiare il numero di DWU, usare il cmdlet di PowerShell Set-AzSqlDatabase. L'esempio seguente imposta l'obiettivo del livello di servizio su DW1000 per il database MySQLDW ospitato nel server MyServer.

Set-AzSqlDatabase -DatabaseName "MySQLDW" -ServerName "MyServer" -RequestedServiceObjectiveName "DW1000c"

Per altre informazioni, vedere Cmdlet di PowerShell per il pool SQL dedicato (in precedenza SQL Data Warehouse)

T-SQL

Con T-SQL è possibile visualizzare le impostazioni correnti per DWU, cambiarle e verificare lo stato.

Per modificare le DWU:

  1. Connettersi al database master associato al server.
  2. Usare l'istruzione T-SQL ALTER DATABASE. L'esempio seguente imposta l'obiettivo del livello di servizio su DW1000c per il database MySQLDW.
ALTER DATABASE MySQLDW
MODIFY (SERVICE_OBJECTIVE = 'DW1000c')
;

API REST

Per modificare le DWU, usare l'API REST descritta in Create or Update Database (Creare o aggiornare il database). L'esempio seguente imposta l'obiettivo del livello di servizio su DW1000c per il database MySQLDW ospitato nel server MyServer. Il server appartiene al gruppo di risorse di Azure ResourceGroup1.

PUT https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{server-name}/databases/{database-name}?api-version=2014-04-01-preview HTTP/1.1
Content-Type: application/json; charset=UTF-8

{
    "properties": {
        "requestedServiceObjectiveName": "DW1000c"
    }
}

Per altri esempi di API REST, vedere API REST per il pool SQL dedicato (in precedenza SQL Data Warehouse).

Controllare lo stato delle modifiche alle DWU

Il completamento delle modifiche alle DWU può richiedere alcuni minuti. In caso di operazioni automatiche di ridimensionamento, valutare l'implementazione della logica per assicurare il completamento di determinate operazioni prima di procedere con altre.

Verificando lo stato del database in vari endpoint sarà possibile implementare correttamente l'automazione. Il portale invia notifiche una volta completata un'operazione e indica lo stato corrente del database. Tuttavia non è possibile verificare lo stato in maniera programmatica.

Non è possibile verificare lo stato del database per le operazioni di scalabilità orizzontale con il portale di Azure.

Per controllare lo stato delle modifiche alle DWU:

  1. Connettersi al database master associato al server.

  2. Inviare la query seguente per controllare lo stato del database.

    SELECT    *
    FROM      sys.dm_operation_status
    WHERE     resource_type_desc = 'Database'
    AND       major_resource_id = 'MySQLDW'
    ;
    

Questa DMV restituisce informazioni sulle varie operazioni di gestione nel pool SQL dedicato (in precedenza SQL Data Warehouse), ad esempio l'operazione e il relativo stato, che può essere IN_PROGRESS o COMPLETED.

Flusso di lavoro del ridimensionamento

Quando si avvia un'operazione di ridimensionamento, il sistema chiude prima di tutto tutte le sessioni aperte, eseguendo il rollback delle eventuali transazioni aperte per assicurare uno stato coerente. Le operazioni di ridimensionamento vengono eseguite solo dopo il completamento del rollback delle transazioni.

  • Per le operazioni di aumento, il sistema scollega tutti i nodi di calcolo, esegue il provisioning di nodi di calcolo aggiuntivi e quindi si ricollega al livello di archiviazione.
  • Per le operazioni di riduzione, il sistema scollega tutti i nodi di calcolo e quindi ricollega solo quelli necessari al livello di archiviazione.

Passaggi successivi

Per altre informazioni sulla gestione delle prestazioni, vedere Classi di risorse per la gestione del carico di lavoro e Limiti di memoria e concorrenza.