Configurare il runtime di integrazione Azure-SSIS per garantire prestazioni elevate

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

Questo articolo descrive come configurare un runtime di integrazione Azure-SSIS per garantire prestazioni elevate. Il runtime di integrazione Azure-SSIS consente di distribuire ed eseguire pacchetti SQL Server Integration Services (SSIS) in Azure. Per altre informazioni sul runtime di integrazione Azure-SSIS, vedere l'articolo Runtime di integrazione. Per informazioni sulla distribuzione e l'esecuzione di pacchetti SSIS in Azure, vedere Spostare i carichi di lavoro di SQL Server Integration Services nel cloud.

Importante

Questo articolo contiene i risultati delle prestazioni e le osservazioni derivanti dai test interni effettuati da membri del team di sviluppo SSIS. I risultati ottenuti dall'utente possono variare. Eseguire test personalizzati prima di completare le impostazioni di configurazione, che interessano sia i costi che le prestazioni.

Proprietà da configurare

La parte di script di configurazione riportata di seguito mostra le proprietà che è possibile configurare quando si crea un runtime di integrazione Azure-SSIS. Per lo script di PowerShell completo e la relativa descrizione, vedere Distribuire pacchetti SQL Server Integration Services in Azure.

# If your input contains a PSH special character, e.g. "$", precede it with the escape character "`" like "`$"
$SubscriptionName = "[your Azure subscription name]"
$ResourceGroupName = "[your Azure resource group name]"
$DataFactoryName = "[your data factory name]"
# For supported regions, see https://azure.microsoft.com/global-infrastructure/services/?products=data-factory&regions=all
$DataFactoryLocation = "EastUS"

### Azure-SSIS integration runtime information - This is a Data Factory compute resource for running SSIS packages
$AzureSSISName = "[specify a name for your Azure-SSIS IR]"
$AzureSSISDescription = "[specify a description for your Azure-SSIS IR]"
# For supported regions, see https://azure.microsoft.com/global-infrastructure/services/?products=data-factory&regions=all
$AzureSSISLocation = "EastUS"
# For supported node sizes, see https://azure.microsoft.com/pricing/details/data-factory/ssis/
$AzureSSISNodeSize = "Standard_D8_v3"
# 1-10 nodes are currently supported
$AzureSSISNodeNumber = 2
# Azure-SSIS IR edition/license info: Standard or Enterprise
$AzureSSISEdition = "Standard" # Standard by default, while Enterprise lets you use advanced/premium features on your Azure-SSIS IR
# Azure-SSIS IR hybrid usage info: LicenseIncluded or BasePrice
$AzureSSISLicenseType = "LicenseIncluded" # LicenseIncluded by default, while BasePrice lets you bring your existing SQL Server license with Software Assurance to earn cost savings from Azure Hybrid Benefit (AHB) option
# For a Standard_D1_v2 node, up to 4 parallel executions per node are supported, but for other nodes, up to max(2 x number of cores, 8) are currently supported
$AzureSSISMaxParallelExecutionsPerNode = 8
# Custom setup info
$SetupScriptContainerSasUri = "" # OPTIONAL to provide SAS URI of blob container where your custom setup script and its associated files are stored
# Virtual network info: Classic or Azure Resource Manager
$VnetId = "[your virtual network resource ID or leave it empty]" # REQUIRED if you use Azure SQL Database with virtual network service endpoints/SQL Managed Instance/on-premises data, Azure Resource Manager virtual network is recommended, Classic virtual network will be deprecated soon
$SubnetName = "[your subnet name or leave it empty]" # WARNING: Please use the same subnet as the one used with your Azure SQL Database with virtual network service endpoints or a different subnet than the one used for your SQL Managed Instance

### SSISDB info
$SSISDBServerEndpoint = "[your server name or managed instance name.DNS prefix].database.windows.net" # WARNING: Please ensure that there is no existing SSISDB, so we can prepare and manage one on your behalf
# Authentication info: SQL or Azure Active Directory (AAD)
$SSISDBServerAdminUserName = "[your server admin username for SQL authentication or leave it empty for AAD authentication]"
$SSISDBServerAdminPassword = "[your server admin password for SQL authentication or leave it empty for AAD authentication]"
$SSISDBPricingTier = "[Basic|S0|S1|S2|S3|S4|S6|S7|S9|S12|P1|P2|P4|P6|P11|P15|…|ELASTIC_POOL(name = <elastic_pool_name>) for Azure SQL Database or leave it empty for SQL Managed Instance]"

AzureSSISLocation

AzureSSISLocation è la posizione per il nodo del ruolo di lavoro del runtime di integrazione. Il nodo di lavoro mantiene una connessione costante al database del catalogo SSIS (SSISDB) in database SQL di Azure. Impostare AzureSSISLocation sulla stessa posizione del server SQL logico che ospita SSISDB, che consente al runtime di integrazione di funzionare nel modo più efficiente possibile.

AzureSSISNodeSize

Data Factory, incluso il runtime di integrazione Azure-SSIS, supporta le opzioni seguenti:

  • Standard_A4_v2
  • Standard_A8_v2
  • Standard_D1_v2
  • Standard_D2_v2
  • Standard_D3_v2
  • Standard_D4_v2
  • Standard_D2_v3
  • Standard_D4_v3
  • Standard_D8_v3
  • Standard_D16_v3
  • Standard_D32_v3
  • Standard_D64_v3
  • Standard_E2_v3
  • Standard_E4_v3
  • Standard_E8_v3
  • Standard_E16_v3
  • Standard_E32_v3
  • Standard_E64_v3

Nei test interni non ufficiali condotti dal team di progettazione SSIS, la serie D sembra essere più adatta all'esecuzione di pacchetti SSIS rispetto alla serie A.

  • Il rapporto prestazioni/prezzo della serie D è superiore a quello della serie A e il rapporto prestazioni/prezzo della serie v3 è superiore alla serie v2.
  • La velocità effettiva per la serie D è superiore alla serie A allo stesso prezzo e la velocità effettiva per la serie v3 è superiore alla serie v2 allo stesso prezzo.
  • I nodi della serie v2 di Azure-SSIS IR non sono adatti per la configurazione personalizzata, quindi usare invece i nodi della serie v3. Se si usano già i nodi della serie v2, passare per usare i nodi della serie v3 il prima possibile.
  • La serie E è una macchina virtuale ottimizzata per la memoria che offre un rapporto da memoria a CPU superiore rispetto ad altri computer. Se il pacchetto richiede molta memoria, è possibile scegliere la macchina virtuale serie E.

Configurare la velocità di esecuzione

Se non si dispone di molti pacchetti da eseguire e si desidera che vengano eseguiti rapidamente, usare le informazioni presentate nel grafico seguente per scegliere un tipo di macchina virtuale adatto allo scenario in uso.

Questi dati rappresentano l'esecuzione di un singolo pacchetto in un singolo nodo del ruolo di lavoro. Il pacchetto carica 3 milioni di record con colonne nome e cognome da Archiviazione BLOB di Azure, genera una colonna nome completo e scrive i record con il nome completo più lungo di 20 caratteri in Archiviazione BLOB di Azure.

L'asse y è il numero di pacchetti che hanno completato l'esecuzione in un'ora. Si noti che si tratta solo di un risultato di test di un pacchetto che utilizza la memoria. Se si vuole conoscere la velocità effettiva del pacchetto, è consigliabile eseguire manualmente il test.

SSIS Integration Runtime package execution speed

Configurare la velocità effettiva complessiva

Se i pacchetti da eseguire sono molti e la velocità effettiva complessiva è un requisito prioritario, usare le informazioni presentate nel grafico seguente per scegliere il tipo di macchina virtuale adatto allo scenario in uso.

L'asse y è il numero di pacchetti che hanno completato l'esecuzione in un'ora. Si noti che si tratta solo di un risultato di test di un pacchetto che utilizza la memoria. Se si vuole conoscere la velocità effettiva del pacchetto, è consigliabile eseguire manualmente il test.

SSIS Integration Runtime maximum overall throughput

AzureSSISNodeNumber

AzureSSISNodeNumber regola la scalabilità del runtime di integrazione. La velocità effettiva del runtime di integrazione è proporzionale al valore di AzureSSISNodeNumber. Impostare inizialmente AzureSSISNodeNumber su un valore contenuto, monitorare la velocità effettiva del runtime di integrazione, quindi regolare il valore per lo scenario in uso. Per riconfigurare il conteggio dei nodi del ruolo di lavoro, vedere Gestire un runtime di integrazione SSIS-Azure.

AzureSSISMaxParallelExecutionsPerNode

Quando si usa già un nodo del ruolo di lavoro potente per eseguire i pacchetti, se si aumenta il valore di AzureSSISMaxParallelExecutionsPerNode, può aumentare la velocità effettiva complessiva del runtime di integrazione. Per aumentare il valore massimo, è necessario usare Azure PowerShell per aggiornare AzureSSISMaxParallelExecutionsPerNode. È possibile stimare il valore appropriato in base al costo del pacchetto e alle configurazioni seguenti per i nodi del ruolo di lavoro. Per altre informazioni, vedere Dimensioni delle macchine virtuali di utilizzo generico.

Dimensione vCPU Memoria: GiB GiB di archiviazione temp (unità SSD) Velocità effettiva massima di archiviazione temporanea: IOPS/Mbps di lettura/Mbps di scrittura Velocità effettiva/disco di dati massimo: IOPS Schede di interfaccia di rete max/prestazioni rete previste (Mbps)
Standard_D1_v2 1 3.5 50 3000 / 46 / 23 2/2 x 500 2 / 750
Standard_D2_v2 2 7 100 6000 / 93 / 46 4/4 x 500 2 / 1500
Standard_D3_v2 4 14 200 12000 / 187 / 93 8/8 x 500 4 / 3000
Standard_D4_v2 8 28 400 24000 / 375 / 187 16/16 x 500 8 / 6000
Standard_A4_v2 4 8 40 4000 / 80 / 40 8/8 x 500 4 / 1000
Standard_A8_v2 8 16 80 8000 / 160 / 80 16/16 x 500 8 / 2000
Standard_D2_v3 2 8 50 3000 / 46 / 23 4/ 6x500 2 / 1000
Standard_D4_v3 4 16 100 6000 / 93 / 46 8/ 12x500 2 / 2000
Standard_D8_v3 8 32 200 12000 / 187 / 93 16/ 24x500 4 / 4000
Standard_D16_v3 16 64 400 24000 / 375 / 187 32/ 48x500 8 / 8000
Standard_D32_v3 32 128 800 48000 / 750 / 375 32/ 96x500 8 / 16000
Standard_D64_v3 64 256 1600 96000 / 1000 / 500 32/ 192x500 8 / 30000
Standard_E2_v3 2 16 50 3000 / 46 / 23 4/ 6x500 2 / 1000
Standard_E4_v3 4 32 100 6000 / 93 / 46 8/ 12x500 2 / 2000
Standard_E8_v3 8 64 200 12000 / 187 / 93 16/ 24x500 4 / 4000
Standard_E16_v3 16 128 400 24000 / 375 / 187 32 / 48x500 8 / 8000
Standard_E32_v3 32 256 800 48000 / 750 / 375 32/ 96x500 8 / 16000
Standard_E64_v3 64 432 1600 96000 / 1000 / 500 32/ 192x500 8 / 30000

Di seguito sono riportate le linee guida per l'impostazione del valore corretto per la proprietà AzureSSISMaxParallelExecutionsPerNode:

  1. Impostare la proprietà inizialmente su un valore ridotto.
  2. Aumentare il valore di una piccola quantità per controllare se la velocità effettiva complessiva migliora.
  3. Non aumentare più il valore quando la velocità effettiva complessiva raggiunge il valore massimo.

SSISDBPricingTier

SSISDBPricingTier è il piano tariffario per il database del catalogo SSIS (SSISDB) in database SQL di Azure. Questa impostazione influisce sul numero massimo di ruoli di lavoro nell'istanza del runtime di integrazione, sulla velocità di accodamento dell'esecuzione di un pacchetto e sulla velocità di caricamento del log di esecuzione.

  • Se non si è interessati alla velocità di accodamento dell'esecuzione del pacchetto e di caricamento del log di esecuzione, è possibile scegliere il piano tariffario per database minimo. Il database SQL di Azure con prezzi Basic supporta 8 ruoli di lavoro in un'istanza di runtime di integrazione.

  • Se il numero dei ruoli di lavoro è maggiore di 8 o il numero di core è superiore a 50, scegliere un database più potente del piano Basic. In caso contrario, il database diventa il collo di bottiglia dell'istanza di runtime di integrazione e si verifica un rallentamento delle prestazioni complessive.

  • Scegliere un database più potente, ad esempio s3, se il livello di registrazione è impostato su dettagliato. In base ai test interni non ufficiali, il piano tariffario s3 può supportare l'esecuzione di pacchetti SSIS con 2 nodi, 128 conteggi paralleli e livello di registrazione dettagliato.

È inoltre possibile regolare il piano tariffario del database in base alle informazioni sull'utilizzo in unità di trasmissione dati (DTU) disponibili nel portale di Azure.

progettata per prestazioni elevate

Progettare un pacchetto SSIS da eseguire in Azure è diverso dal progettare un pacchetto da eseguire in locale. Affinché il runtime di integrazione Azure-SSIS venga eseguito in modo più efficiente, è consigliabile separare le attività indipendenti in più pacchetti anziché combinarle nello stesso pacchetto. Creare un'esecuzione di pacchetto per ogni pacchetto, affinché ogni pacchetto non debba attendere il completamento del pacchetto precedente. Questo approccio beneficia della scalabilità del runtime di integrazione Azure-SSIS e migliora la velocità effettiva complessiva.

Altre informazioni sul runtime di integrazione di Azure-SSIS. Vedere Runtime di integrazione Azure-SSIS.