Consumo di risorse di Synapse SQL

Questo articolo descrive i modelli di consumo di risorse di Synapse SQL.

Pool SQL serverless

Il pool SQL serverless è un servizio con pagamento in base a query che non richiede di selezionare le dimensioni corrette. Il sistema si adatta automaticamente in base ai requisiti, evitando la necessità di gestire l'infrastruttura e di selezionare le dimensioni corrette per la soluzione.

Pool SQL dedicato - Unità Data Warehouse (DWU) e unità Data Warehouse a elevato utilizzo di calcolo (cDWU)

Raccomandazioni per la scelta del numero ideale di unità Data Warehouse (DWU) per ottimizzare prezzo e prestazioni e informazioni su come cambiarne il numero.

Unità Data Warehouse

Il pool SQL Synapse rappresenta una raccolta di risorse di analisi 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. Una modifica al livello di servizio influisce sul numero di DWU disponibili per il sistema, la cui modifica determina a sua volta una variazione delle prestazioni e dei costi del sistema.

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 data warehousing standard 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 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 data warehouse. I livelli di servizio per la seconda generazione sono misurati in unità di calcolo data warehouse (DWU a elevato utilizzo di calcolo), ad esempio DW2000c. I livelli di servizio di prima generazione sono misurati in DWU, ad esempio DW2000.

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

Nota

In Azure Synapse Analytics Gen2 sono state di recente aggiunte altre funzionalità di dimensionamento per supportare livelli di calcolo di 100 DWU a elevato utilizzo di calcolo. 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.

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.

Aumentando le unità Data Warehouse si aumentano in modo lineare le risorse di calcolo. La seconda generazione offre le migliori prestazioni per le query e la massima scalabilità. Questi sistemi usano anche al massimo la cache.

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.

Valutare il numero di unità di data warehouse necessarie

Il numero ideale di unità Data Warehouse dipende principalmente 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.
  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 è 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 selezionare Ridimensiona.

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

  3. Seleziona Salva. Viene visualizzato un messaggio di conferma. Selezionare per confermare o 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 Azure Synapse Analytics

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": DW1000
    }
}

Per altri esempi di API REST, vedere API REST per Azure Synapse Analytics.

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 assicurarsi che determinate operazioni siano completate prima di procedere con altre.

Verificando lo stato del database in vari endpoint sarà possibile implementare correttamente l'automazione. Il portale invia una notifica quando un'operazione viene completata e indica lo stato corrente del database, ma non consente di verificare lo stato in maniera programmatica.

Non è possibile verificare lo stato del database per le operazioni di scale-out 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.databases
;
  1. Inviare la query seguente per controllare lo stato dell'operazione.
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, 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.