Ottimizzazione delle prestazioni dell'importazione bulk

In questo argomento vengono descritte alcune opzioni per l'ottimizzazione dell'importazione bulk dei dati in una tabella in MicrosoftSQL Server mediante un comando bcp, un'istruzione BULK INSERT oppure un'istruzione OPEN OWSET(BULK ...) (Transact-SQL). Per eseguire l'importazione o l'esportazione bulk dei dati il più rapidamente possibile, è importante comprendere i fattori che influenzano le prestazioni e i qualificatori di comando disponibili per gestire le prestazioni. Dove possibile, utilizzare un'istruzione Transact-SQL per l'importazione bulk dei dati in SQL Server in quanto Transact-SQL è più rapido di bcp.

[!NOTA]

Per un confronto tra le due alternative, vedere Informazioni sulle operazioni di importazione ed esportazione bulk.

La modalità ottimale per migliorare le prestazioni di un'operazione di importazione bulk dipende dai fattori seguenti:

  • Se alla tabella sono applicati vincoli, trigger o entrambi.

  • Il modello di recupero utilizzato dal database.

    Per ulteriori informazioni, vedere Panoramica del modello di recupero.

  • Se la tabella in cui vengono copiati i dati è vuota.

  • Se la tabella dispone di indici.

  • Se viene specificato TABLOCK.

  • Se i dati verranno copiati da un client singolo o in parallelo da più client.

  • Se i dati verranno copiati tra due computer sui quali SQL Server è in esecuzione.

Nota importanteImportante

In SQL Server 2005 e versioni successive, le operazioni di ottimizzazione dell'importazione bulk sono disponibili quando i trigger sono abilitati. SQL Server 2005 utilizza il controllo delle versioni delle righe per i trigger e memorizza le versioni delle righe nell'archivio delle versioni in tempdb. Prima di poter eseguire un'importazione bulk di un batch di record di dati di grandi dimensioni tramite i trigger, potrebbe essere necessario aumentare le dimensioni di tempdb a causa dell'impatto dei trigger sull'archivio delle versioni.

Per informazioni sugli effetti di questi fattori sugli scenari di importazione bulk, vedere Linee guida per l'ottimizzazione dell'importazione bulk.

Modalità di ottimizzazione dell'importazione bulk

Per velocizzare l'importazione bulk dei dati, SQL Server offre le modalità seguenti:

  • Utilizzo della registrazione minima

    Il modello di recupero con registrazione minima prevede la registrazione minima della maggior parte delle operazioni bulk.

    Per un database con modello di recupero con registrazione completa, tutte le operazioni di inserimento di righe eseguite durante l'importazione bulk vengono registrate in modo completo nel log delle transazioni. In caso di importazioni di grandi quantità di dati, ciò può causare un rapido esaurimento dello spazio disponibile nel log. Per le operazioni bulk la registrazione minima è più efficiente di quella completa e riduce la possibilità che un'operazione di importazione bulk esaurisca lo spazio nel log. Per eseguire la registrazione minima di un'operazione di importazione bulk in un database che in genere utilizza il modello di recupero con registrazione completa, è possibile passare al modello di recupero con registrazione minima delle operazioni bulk. Dopo l'importazione bulk dei dati, passare nuovamente al modello di recupero con registrazione completa. Per ulteriori informazioni, vedere Considerazioni sul passaggio dal modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk.

    [!NOTA]

    Per le righe inserite viene eseguita la registrazione minima se è applicabile la registrazione delle operazioni bulk. In caso contrario, le righe inserite vengono registrate in modo completo nel log delle transazioni. Per informazioni sul momento in cui le operazioni di importazione bulk vengono registrate e su come eseguire operazioni di importazione bulk con registrazione minima, vedere Operazioni per cui è possibile eseguire la registrazione minima e Prerequisiti per la registrazione minima nell'importazione bulk.

  • Importazione di dati in parallelo da più client in una tabella singola

    SQL Server consente l'importazione bulk dei dati in una tabella singola da più client in parallelo. Tutti e tre i meccanismi di importazione bulk supportano l'importazione parallela dei dati. Ciò consente di migliorare le prestazioni delle operazioni di importazione dei dati.

    Per ulteriori informazioni, vedere Importazione di dati in parallelo tramite il blocco a livello di tabella.

  • Utilizzo dei batch

    Per informazioni sull'utilizzo dei batch nell'importazione dei dati e per informazioni sui qualificatori di comando per la gestione dei batch, vedere Gestione dei batch per l'importazione bulk.

    [!NOTA]

    L'opzione BULK della clausola OPENROWSET non supporta il controllo delle dimensioni dei batch.

  • Disabilitazione dei trigger

    La disabilitazione dei trigger può migliorare le prestazioni.

    Per ulteriori informazioni sull'effetto dell'esecuzione dei trigger sulle operazioni di importazione bulk e su come abilitare o disabilitare i trigger, vedere Controllo dell'esecuzione dei trigger durante l'importazione bulk di dati.

  • Disabilitazione dei vincoli

    Per informazioni sull'effetto della verifica dei vincoli sulle operazioni di importazione bulk e su come abilitare o disabilitare i vincoli CHECK e FOREIGN KEY di una tabella, vedere Controllo della verifica dei vincoli tramite operazioni di importazione bulk.

  • Ordinamento dei dati in un file di dati

    Per impostazione predefinita, un'operazione di importazione bulk parte dal presupposto che il file di dati non sia ordinato. Se la tabella include un indice cluster, l'utilità bcp, l'istruzione BULK INSERT e la funzione OPENR OWSET(BULK…) (Transact-SQL) consentono di specificare in che modo i dati nel file di dati vengono ordinati durante un'operazione di importazione bulk. L'ordinamento dei dati nel file di dati in modo uguale ai dati nella tabella è facoltativo. Tuttavia, è possibile migliorare le prestazioni dell'operazione di importazione bulk se si specifica lo stesso ordinamento per il file di dati e per la tabella.

    Per ulteriori informazioni, vedere Controllo dell'ordinamento durante l'importazione bulk di dati.

  • Controllo del comportamento di blocco

    Per informazioni su come specificare il comportamento di blocco durante operazioni di importazione bulk, vedere Controllo della modalità di blocco per l'importazione bulk.

  • Importazione di dati in formato nativo

    Per ulteriori informazioni, vedere Utilizzo del formato nativo per l'importazione o l'esportazione di dati e Utilizzo del formato Unicode nativo per importare o esportare dati.