Funzionalità delle prestazioni del flusso di datiData Flow Performance Features

In questo argomento sono inclusi alcuni suggerimenti sulla progettazione di pacchetti di Integration ServicesIntegration Services per evitare problemi di prestazioni comuni.This topic provides suggestions about how to design Integration ServicesIntegration Services packages to avoid common performance issues. Sono inoltre fornite informazioni sugli strumenti e sulle funzionalità che è possibile usare per risolvere i problemi relativi alle prestazioni dei pacchetti.This topic also provides information about features and tools that you can use to troubleshoot the performance of packages.

Configurazione del flusso di datiConfiguring the Data Flow

Per configurare l'attività Flusso di dati per ottenere prestazioni migliori, è possibile configurare le proprietà dell'attività, modificare le dimensioni del buffer e configurare il pacchetto per l'esecuzione parallela.To configure the Data Flow task for better performance, you can configure the task's properties, adjust buffer size, and configure the package for parallel execution.

Configurazione delle proprietà dell'attività Flusso di datiConfigure the Properties of the Data Flow Task

Nota

Le proprietà trattate in questa sezione devono essere impostate separatamente per ogni attività Flusso di dati in un pacchetto.The properties discussed in this section must be set separately for each Data Flow task in a package.

È possibile configurare le proprietà seguenti dell'attività Flusso di dati, che influenzano le prestazioni:You can configure the following properties of the Data Flow task, all of which affect performance:

  • Specificare il percorso per l'archiviazione temporanea dei dati del buffer, impostando la proprietà BufferTempStoragePath e delle colonne contenenti dati BLOB (Binary Large Object), impostando la proprietà BLOBTempStoragePath.Specify the locations for temporary storage of buffer data (BufferTempStoragePath property) and of columns that contain binary large object (BLOB) data (BLOBTempStoragePath property). Per impostazione predefinita, le proprietà contengono i valori delle variabili di ambiente TEMP e TMP.By default, these properties contain the values of the TEMP and TMP environment variables. Potrebbe essere necessario specificare altre cartelle per inserire i file temporanei in un'unità disco rigido diversa o più potente o distribuirli in più unità.You might want to specify other folders to put the temporary files on a different or faster hard disk drive, or to spread them across multiple drives. È possibile specificare più directory delimitando i relativi nomi con punti e virgola (;).You can specify multiple directories by delimiting the directory names with semicolons.

  • Definire le dimensioni predefinite del buffer usato dall'attività, impostando la proprietà DefaultBufferSize e il numero massimo di righe in ogni buffer, impostando la proprietà DefaultBufferMaxRows.Define the default size of the buffer that the task uses, by setting the DefaultBufferSize property, and define the maximum number of rows in each buffer, by setting the DefaultBufferMaxRows property. Impostare la proprietà AutoAdjustBufferSize per indicare se le dimensioni predefinite del buffer vengono calcolate automaticamente dal valore della proprietà DefaultBufferMaxRows.Set the AutoAdjustBufferSize property to indicate whether the default size of the buffer is calculated automatically from the value of the DefaultBufferMaxRows property. Le dimensioni predefinite del buffer sono di 10 MB e quelle massime di 2^31-1 byte.The default buffer size is 10 megabytes, with a maximum buffer size of 2^31-1 bytes. Il numero di righe massimo predefinito è 10.000.The default maximum number of rows is 10,000.

  • Definire il numero di thread che l'attività può usare durante l'esecuzione, impostando la proprietà EngineThreads.Set the number of threads that the task can use during execution, by setting the EngineThreads property. Questa proprietà indica al motore flusso di dati il numero di thread da utilizzare.This property provides a suggestion to the data flow engine about the number of threads to use. Il valore predefinito è 10. Il valore minimo è 3.The default is 10, with a minimum value of 3. Il motore, tuttavia, non usa più thread di quelli necessari, indipendentemente dal valore di questa proprietà.However, the engine will not use more threads than it needs, regardless of the value of this property. Il motore può inoltre usare un numero di thread maggiore di quello specificato da questa proprietà, se necessario per evitare problemi di concorrenza.The engine may also use more threads than specified in this property, if necessary to avoid concurrency issues.

  • Indicare se l'attività Flusso di dati viene eseguita in modalità ottimizzata, impostando la proprietà RunInOptimizedMode.Indicate whether the Data Flow task runs in optimized mode (RunInOptimizedMode property). La modalità ottimizzata consente di migliorare le prestazioni rimuovendo dal flusso di dati le colonne, gli output e i componenti inutilizzati.Optimized mode improves performance by removing unused columns, outputs, and components from the data flow.

    Nota

    Per indicare che l'attività Flusso di dati viene eseguita in modalità ottimizzata durante il debug, è possibile impostare una proprietà con lo stesso nome, ovvero RunInOptimizedMode, a livello di progetto in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT) .A property with the same name, RunInOptimizedMode, can be set at the project level in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT) to indicate that the Data Flow task runs in optimized mode during debugging. Questa proprietà ha la precedenza sulla proprietà RunInOptimizedMode delle attività Flusso di dati in fase di progettazione.This project property overrides the RunInOptimizedMode property of Data Flow tasks at design time.

Modificare il ridimensionamento dei bufferAdjust the Sizing of Buffers

Il motore flusso di dati inizia l'attività di ridimensionamento dei buffer calcolando le dimensioni stimate di una singola riga di dati.The data flow engine begins the task of sizing its buffers by calculating the estimated size of a single row of data. Queste dimensioni vengono quindi moltiplicate per il valore di DefaultBufferMaxRows, per ottenere un valore preliminare per le dimensioni del buffer.Then it multiplies the estimated size of a row by the value of DefaultBufferMaxRows to obtain a preliminary working value for the buffer size.

  • Se AutoAdjustBufferSize è impostata su true, il motore flusso di dati usa il valore calcolato come dimensioni del buffer e il valore di DefaultBufferSize viene ignorato.If AutoAdjustBufferSize is set to true, the engine data flow engine uses the calculated value as the buffer size, and the value of DefaultBufferSize is ignored.

  • Se AutoAdjustBufferSize è impostato su false, il motore flusso di dati usa le regole seguenti per determinare le dimensioni del buffer.If AutoAdjustBufferSize is set to false, the engine data flow engine uses the following rules to determine the buffer size.

    • Se il risultato è superiore al valore di DefaultBufferSize, il numero di righe viene ridotto.If the result is more than the value of DefaultBufferSize, the engine reduces the number of rows.

    • Se il risultato è inferiore alle dimensioni minime del buffer calcolate internamente, il numero di righe viene aumentato.If the result is less than the internally-calculated minimum buffer size, the engine increases the number of rows.

    • Se il risultato è compreso tra le dimensioni minime del buffer e il valore della proprietà DefaultBufferSize, il buffer viene ridimensionato per ottenere il valore più vicino possibile alle dimensioni stimate della riga per il valore di DefaultBufferMaxRows.If the result falls between the minimum buffer size and the value of DefaultBufferSize, the engine sizes the buffer as close as possible to the estimated row size times the value of DefaultBufferMaxRows.

    Quando si inizia a testare le prestazioni delle attività Flusso di dati, usare i valori predefiniti per DefaultBufferSize e DefaultBufferMaxRows.When you begin testing the performance of your data flow tasks, use the default values for DefaultBufferSize and DefaultBufferMaxRows. Abilitare la registrazione nell'attività Flusso di dati e selezionare l'evento BufferSizeTuning per verificare il numero di righe presenti in ogni buffer.Enable logging on the data flow task, and select the BufferSizeTuning event to see how many rows are contained in each buffer.

    Prima di iniziare a modificare il ridimensionamento dei buffer, è possibile ridurre le dimensioni di ogni riga di dati rimuovendo le colonne non necessarie e configurando i tipi di dati in modo appropriato.Before you begin adjusting the sizing of the buffers, the most important improvement that you can make is to reduce the size of each row of data by removing unneeded columns and by configuring data types appropriately.

    Per determinare il numero e le dimensioni ottimali dei buffer, provare a usare diversi valori di DefaultBufferSize e DefaultBufferMaxRows monitorando le prestazioni e analizzando le informazioni riportate dall'evento BufferSizeTuning.To determine the optimum number of buffers and their size, experiment with the values of DefaultBufferSize and DefaultBufferMaxRows while monitoring performance and the information reported by the BufferSizeTuning event.

    Evitare di aumentare le dimensioni del buffer fino al punto in cui inizia a verificarsi il paging su disco.Do not increase buffer size to the point where paging to disk starts to occur. Il paging su disco influisce negativamente sulle prestazioni più di quanto non faccia la mancata ottimizzazione delle dimensioni del buffer.Paging to disk hinders performance more than a buffer size that has not been optimized. Per determinare il verificarsi o meno del paging, monitorare il contatore delle prestazioni "Buffer con spooling" nello snap-in Prestazioni di MicrosoftMicrosoft Management Console (MMC).To determine whether paging is occurring, monitor the "Buffers spooled" performance counter in the Performance snap-in of the MicrosoftMicrosoft Management Console (MMC).

Configurare il pacchetto per l'esecuzione parallelaConfigure the Package for Parallel Execution

L'esecuzione parallela migliora le prestazioni nei computer dotati di più processori fisici o logici.Parallel execution improves performance on computers that have multiple physical or logical processors. Per supportare l'esecuzione parallela di diverse attività nel pacchetto, Integration ServicesIntegration Services usa due proprietà: MaxConcurrentExecutables e EngineThreads.To support parallel execution of different tasks in the package, Integration ServicesIntegration Services uses two properties: MaxConcurrentExecutables and EngineThreads.

Proprietà MaxConcurrentExcecutablesThe MaxConcurrentExcecutables Property

La proprietà MaxConcurrentExecutables è una proprietà del pacchetto stesso.The MaxConcurrentExecutables property is a property of the package itself. Questa proprietà definisce il numero massimo di attività che è possibile eseguire simultaneamente.This property defines how many tasks can run simultaneously. Il valore predefinito è -1, a indicare il numero di processori fisici o logici più 2.The default value is -1, which means the number of physical or logical processors plus 2.

Per comprendere il funzionamento di questa proprietà, considerare un pacchetto di esempio contenente tre attività Flusso di dati.To understand how this property works, consider a sample package that has three Data Flow tasks. Se si imposta MaxConcurrentExecutables su 3, le tre attività Flusso di dati potranno essere eseguite tutte simultaneamente.If you set MaxConcurrentExecutables to 3, all three Data Flow tasks can run simultaneously. Si supponga, tuttavia, che ogni attività Flusso di dati contenga 10 alberi di esecuzione dall'origine alla destinazione.However, assume that each Data Flow task has 10 source-to-destination execution trees. L'impostazione di MaxConcurrentExecutables su 3 non garantisce l'esecuzione in parallelo degli alberi di esecuzione in ogni attività Flusso di dati.Setting MaxConcurrentExecutables to 3 does not ensure that the execution trees inside each Data Flow task run in parallel.

Proprietà EngineThreadsThe EngineThreads Property

La proprietà EngineThreads è una proprietà di tutte le attività Flusso di dati.The EngineThreads property is a property of each Data Flow task. Questa proprietà definisce il numero di thread che il motore del flusso di dati può creare ed eseguire in parallelo.This property defines how many threads the data flow engine can create and run in parallel. La proprietà EngineThreads si applica ugualmente sia ai thread di origine creati dal motore del flusso di dati per le origini sia ai thread di lavoro creati dal motore per trasformazioni e destinazioni.The EngineThreads property applies equally to both the source threads that the data flow engine creates for sources and the worker threads that the engine creates for transformations and destinations. L'impostazione di EngineThreads su 10, pertanto, indica che il motore può creare fino a dieci thread di origine e fino a dieci thread di lavoro.Therefore, setting EngineThreads to 10 means that the engine can create up to ten source threads and up to ten worker threads.

Per comprendere il funzionamento di questa proprietà, considerare il pacchetto di esempio contenente tre attività Flusso di dati.To understand how this property works, consider the sample package with three Data Flow tasks. Ogni attività Flusso di dati contiene dieci alberi di esecuzione dall'origine alla destinazione.Each of Data Flow task contains ten source-to-destination execution trees. Se si imposta EngineThreads su 10 in ogni attività Flusso di dati, è virtualmente possibile eseguire tutti i 30 alberi di esecuzione simultaneamente.If you set EngineThreads to 10 on each Data Flow task, all 30 execution trees can potentially run simultaneously.

Nota

Una trattazione del threading esula dall'ambito di questo argomento.A discussion of threading is beyond the scope of this topic. La regola generale, tuttavia, consiste nell'evitare l'esecuzione in parallelo di un numero di thread maggiore del numero di processori disponibili.However, the general rule is not to run more threads in parallel than the number of available processors. L'esecuzione di un numero di thread maggiore del numero di processori disponibili può influire negativamente sulle prestazioni a causa del frequente scambio del contesto tra thread.Running more threads than the number of available processors can hinder performance because of the frequent context-switching between threads.

Configurazione di singoli componenti del flusso di datiConfiguring Individual Data Flow Components

Per configurare singoli componenti del flusso di dati ai fini delle prestazioni, è consigliabile seguire alcune linee guida generali.To configure individual data flow components for better performance, there are some general guidelines that you can follow. Vi sono inoltre linee guida specifiche per ogni tipo di componente del flusso di dati, ovvero origine, trasformazione e destinazione.There are also specific guidelines for each type of data flow component: source, transformation, and destination.

Linee guida generaliGeneral Guidelines

Indipendentemente dal componente del flusso di dati, è consigliabile seguire due linee guida generali per migliorare le prestazioni: ottimizzare le query ed evitare stringhe non necessarie.Regardless of the data flow component, there are two general guidelines that you should follow to improve performance: optimize queries and avoid unnecessary strings.

Ottimizzazione delle queryOptimize Queries

Numerosi componenti del flusso di dati usano query in operazioni di estrazione dei dati dalle origini o in operazioni di ricerca per la creazione di tabelle di riferimento.A number of data flow components use queries, either when they extract data from sources, or in lookup operations to create reference tables. La query predefinita utilizza l'istruzione SELECT * FROM <tableName > sintassi.The default query uses the SELECT * FROM <tableName> syntax. con cui vengono restituite tutte le colonne della tabella di origine.This type of query returns all the columns in the source table. La disponibilità di tutte le colonne in fase di progettazione consente di scegliere qualsiasi colonna come colonna di ricerca, colonna pass-through o colonna di origine.Having all the columns available at design time makes it possible to choose any column as a lookup, pass-through, or source column. Dopo avere selezionato le colonne da usare, è tuttavia necessario modificare la query in modo che includa solo le colonne selezionate.However, after you have selected the columns to be used, you should revise the query to include only those selected columns. La rimozione delle colonne superflue garantisce una maggiore efficienza del flusso di dati in un pacchetto, in quanto un minor numero di colonne comporta la creazione di una riga con dimensioni inferiori.Removing superfluous columns makes the data flow in a package more efficient because fewer columns create a smaller row. Una riga con dimensioni inferiori fa sì che sia possibile inserire più righe in un buffer e che l'elaborazione di tutte le righe nel set di dati risulti meno complessa.A smaller row means that more rows can fit into one buffer, and the less work it is to process all the rows in the dataset.

Per creare una query, è possibile digitarla o usare Generatore query.To construct a query, you can type the query or use Query Builder.

Nota

Quando si esegue un pacchetto in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), nella scheda Stato di Progettazione SSISSSIS vengono visualizzati alcuni avvisi.When you run a package in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), the Progress tab of SSISSSIS Designer lists warnings. Tali avvisi includono l'identificazione di qualsiasi colonna di dati resa disponibile per il flusso di dati da un'origine, ma che non viene usata successivamente dai componenti del flusso di dati a valle.These warnings include identifying any data column that a source makes available to the data flow, but is not subsequently used by downstream data flow components. È possibile usare la proprietà RunInOptimizedMode per rimuovere queste colonne automaticamente.You can use the RunInOptimizedMode property to remove these columns automatically.

Eliminazione di operazioni di ordinamento superflueAvoid Unnecessary Sorting

L'ordinamento è di per sé un'operazione lenta. Evitando operazioni di ordinamento non necessarie è pertanto possibile migliorare le prestazioni del flusso di dati di un pacchetto.Sorting is inherently a slow operation, and avoiding unnecessary sorting can enhance the performance of the package data flow.

Talvolta i dati di origine sono già ordinati prima di essere usati da un componente a valle.Sometimes the source data has already been sorted before being used by a downstream component. Questo preordinamento può verificarsi quando la query SELECT usa una clausola ORDER BY o quando i dati vengono inseriti nell'origine come già ordinati.Such pre-sorting can occur when the SELECT query used an ORDER BY clause or when the data was inserted into the source in sorted order. Per tali dati di origine preordinati, è possibile fornire un hint indicante che i dati sono ordinati e pertanto evitare l'uso di una trasformazione Ordinamento per rispondere ai requisiti di ordinamento di determinate trasformazioni a valle.For such pre-sorted source data, you can provide a hint that the data is sorted, and thereby avoid the use of a Sort transformation to satisfy the sorting requirements of certain downstream transformations. Le trasformazioni Unione e Merge Join, ad esempio, richiedono input ordinati. Per fornire un hint indicante che i dati sono ordinati, è necessario eseguire le attività seguenti:(For example, the Merge and Merge Join transformations require sorted inputs.) To provide a hint that the data is sorted, you have to do the following tasks:

  • Impostare la proprietà IsSorted nell'output di un componente del flusso di dati a monte su True.Set the IsSorted property on the output of an upstream data flow component to True.

  • Specificare le colonne chiave di ordinamento in cui i dati sono ordinati.Specify the sort key columns on which the data is sorted.

    Per altre informazioni, vedere Ordinamento dei dati per le trasformazioni Unione e Merge Join.For more information, see Sort Data for the Merge and Merge Join Transformations.

    Se è necessario ordinare i dati del flusso di dati, è possibile migliorare le prestazioni progettando il flusso di dati in modo che venga eseguito il minor numero possibile di operazioni di ordinamento.If you have to sort the data in the data flow, you can improve performance by designing the data flow to use as few sort operations as possible. Il flusso di dati, ad esempio, usa una trasformazione Multicast per copiare il set di dati.For example, the data flow uses a Multicast transformation to copy the dataset. Ordinare il set di dati una volta prima dell'esecuzione della trasformazione Multicast anziché ordinare più output in seguito alla trasformazione.Sort the dataset once before the Multicast transformation runs, instead of sorting multiple outputs after the transformation.

    Per altre informazioni, vedere Sort Transformation, Merge Transformation, Merge Join Transformatione Multicast Transformation.For more information, see Sort Transformation, Merge Transformation, Merge Join Transformation, and Multicast Transformation.

OriginiSources

Origine OLE DBOLE DB Source

Quando si usa un'origine OLE DB per recuperare dati da una vista, selezionare "Comando SQL" come modalità di accesso ai dati e immette un'istruzione SELECT.When you use an OLE DB source to retrieve data from a view, select "SQL command" as the data access mode and enter a SELECT statement. L'accesso a dati tramite un'istruzione SELECT è più efficace rispetto alla selezione di "Tabella o vista" come modalità di accesso ai dati.Accessing data by using a SELECT statement performs better than selecting "Table or view" as the data access mode.

TrasformazioniTransformations

Usare i suggerimenti inclusi in questa sezione per migliorare la prestazione delle trasformazioni Aggregazione, Ricerca fuzzy, Raggruppamento fuzzy, Ricerca, Merge Join e Dimensione a modifica lenta.Use the suggestions in this section to improve the performance of the Aggregate, Fuzzy Lookup, Fuzzy Grouping, Lookup, Merge Join, and Slowly Changing Dimension transformations.

Trasformazione AggregazioneAggregate Transformation

La trasformazione Aggregazione include le proprietà Keys, KeysScale, CountDistinctKeyse CountDistinctScale .The Aggregate transformation includes the Keys, KeysScale, CountDistinctKeys, and CountDistinctScale properties. Queste proprietà migliorano le prestazioni in quanto consentono alla trasformazione di preallocare la quantità di memoria necessaria per i dati memorizzati nella cache.These properties improve performance by enabling the transformation to preallocate the amount of memory that the transformation needs for the data that the transformation caches. Se si conosce il numero esatto o approssimativo di gruppi che dovrebbero risultato da un'operazione Group by , impostare rispettivamente le proprietà Keys e KeysScale .If you know the exact or approximate number of groups that are expected to result from a Group by operation, set the Keys and KeysScale properties, respectively. Se si conosce il numero esatto o approssimativo di valori distinct che dovrebbero risultare da un'operazione Distinct Count , impostare rispettivamente le proprietà CountDistinctKeys e CountDistinctScale .If you know the exact or approximate number of distinct values that are expected to result from a Distinct count operation, set the CountDistinctKeys and CountDistinctScale properties, respectively.

Se in un flusso di dati è necessario creare più aggregazioni, valutare l'opportunità di creare più aggregazioni che usano una singola trasformazione Aggregazione anziché creare più trasformazioni.If you have to create multiple aggregations in a data flow, consider creating multiple aggregations that use one Aggregate transformation instead of creating multiple transformations. Questo approccio consente prestazioni migliori quando un'aggregazione è un subset di un'altra aggregazione, in quanto la trasformazione può ottimizzare l'archiviazione interna ed eseguire l'analisi dei dati in ingresso una sola volta.This approach improves performance when one aggregation is a subset of another aggregation because the transformation can optimize internal storage and scan incoming data only once. Nel caso, ad esempio, di un'aggregazione che usa la clausola GROUP BY e l'aggregazione AVG, è possibile migliorare le prestazioni combinando clausola e aggregazione in una sola trasformazione.For example, if an aggregation uses a GROUP BY clause and an AVG aggregation, combining them into one transformation can improve performance. L'esecuzione di più aggregazioni all'interno di una trasformazione Aggregazione, tuttavia, comporta la serializzazione delle operazioni di aggregazione e può pertanto influire sulle prestazioni quando è necessario calcolare più aggregazioni indipendentemente.However, performing multiple aggregations within one Aggregate transformation serializes the aggregation operations, and therefore might not improve performance when multiple aggregations must be computed independently.

Trasformazioni Ricerca fuzzy e Raggruppamento fuzzyFuzzy Lookup and Fuzzy Grouping Transformations

Per informazioni sull'ottimizzazione della prestazione di tali trasformazioni, vedere il white paper relativo a Ricerca fuzzy e Raggruppamento fuzzy in SQL Server Integration Services 2005.For information about optimizing the performance of the Fuzzy Lookup and Fuzzy Grouping transformations, see the white paper, Fuzzy Lookup and Fuzzy Grouping in SQL Server Integration Services 2005.

Trasformazione RicercaLookup Transformation

È possibile ridurre al minimo le dimensioni dei dati di riferimento nella memoria immettendo un'istruzione SELECT per la ricerca delle sole colonne necessarie.Minimize the size of the reference data in memory by entering a SELECT statement that looks up only the columns that you need. Questa opzione garantisce prestazioni migliori rispetto alla selezione di un'intera tabella o vista, che restituisce invece una quantità elevata di dati non necessari.This option performs better than selecting an entire table or view, which returns a large amount of unnecessary data.

Merge Join TransformationMerge Join Transformation

Non è più necessario configurare il valore della proprietà MaxBuffersPerInput , in quanto Microsoft ha apportato modifiche che riducono il rischio di utilizzo di una quantità eccessiva di memoria da parte della trasformazione Merge join.You no longer have to configure the value of the MaxBuffersPerInput property because Microsoft has made changes that reduce the risk that the Merge Join transformation will consume excessive memory. Questo problema si verificava in genere quando tramite i diversi input della trasformazione Merge Join venivano prodotti dati con frequenze irregolari.This problem sometimes occurred when the multiple inputs of the Merge Join produced data at uneven rates.

Trasformazione Dimensione a modifica lentaSlowly Changing Dimension Transformation

La Configurazione guidata dimensioni a modifica lenta e la trasformazione Dimensione a modifica lenta sono strumenti di uso generale in grado di rispondere alle esigenze della maggior parte degli utenti.The Slowly Changing Dimension Wizard and the Slowly Changing Dimension transformation are general-purpose tools that meet the needs of most users. Il flusso di dati generato dalla procedura guidata, tuttavia, non è ottimizzato per le prestazioni.However, the data flow that the wizard generates is not optimized for performance.

I componenti più lenti nella trasformazione Dimensione a modifica lenta sono in genere le trasformazioni Comando OLE DB che eseguono istruzioni UPDATE su una singola riga per volta.Typically, the slowest components in the Slowly Changing Dimension transformation are the OLE DB Command transformations that perform UPDATEs against a single row at a time. Il modo più efficace per migliorare le prestazioni della trasformazione Dimensione a modifica lenta consiste pertanto nel sostituire le trasformazioni Comando OLE DB.Therefore, the most effective way to improve the performance of the Slowly Changing Dimension transformation is to replace the OLE DB Command transformations. È possibile sostituire tali trasformazioni con componenti di destinazione che salvano tutte le righe da aggiornare in una tabella di gestione temporanea.You can replace these transformations with destination components that save all rows to be updated to a staging table. È quindi possibile aggiungere un'attività Esegui SQL per l'esecuzione di un singola istruzione UPDATE di Transact-SQL basata su set su tutte le righe contemporaneamente.Then, you can add an Execute SQL task that performs a single set-based Transact-SQL UPDATE against all rows at the same time.

Gli utenti avanzati possono progettare un flusso di dati personalizzato per l'elaborazione delle dimensioni a modifica lenta ottimizzata per dimensioni estese.Advanced users can design a custom data flow for slowly changing dimension processing that is optimized for large dimensions. Per una descrizione e un esempio di questo approccio, vedere la sezione relativa allo scenario con dimensione univoca nel white paper Project REAL: Business Intelligence ETL Design Practices.For a discussion and example of this approach, see the section, "Unique dimension scenario," in the white paper, Project REAL: Business Intelligence ETL Design Practices.

DestinazioniDestinations

Per ottenere prestazioni migliori con le destinazioni, valutare l'opportunità di usare una destinazione SQL ServerSQL Server e di testarne le prestazioni.To achieve better performance with destinations, consider using a SQL ServerSQL Server destination and testing the destination's performance.

Destinazione SQL ServerSQL Server Destination

Quando un pacchetto carica dati in un'istanza di SQL ServerSQL Server nello stesso computer, usare una destinazione SQL ServerSQL Server .When a package loads data to an instance of SQL ServerSQL Server on the same computer, use a SQL ServerSQL Server destination. Tale destinazione è ottimizzata per caricamenti bulk ad alta velocità.This destination is optimized for high-speed bulk loads.

Test delle prestazioni delle destinazioniTesting the Performance of Destinations

In alcuni casi il salvataggio di dati nelle destinazioni potrebbe richiedere tempi più lunghi di quelli previsti.You may find that saving data to destinations takes more time than expected. Per stabilire se ciò è dovuto a un'elaborazione lenta dei dati nella destinazione, è possibile sostituire temporaneamente la destinazione con una trasformazione Conteggio righe.To identify whether the slowness is caused by the inability of the destination to process data quickly enough, you can temporarily replace the destination with a Row Count transformation. Se la velocità effettiva risulta notevolmente migliorata, è probabile che la causa delle prestazioni lente sia la destinazione in cui vengono caricati i dati.If the throughput improves significantly, it is likely that the destination that is loading the data is causing the slowdown.

Analisi delle informazioni nella scheda StatoReview the Information on the Progress Tab

SSISSSISFinestra di progettazione fornisce informazioni sul flusso di controllo e flusso di dati quando si esegue un pacchetto in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT). Designer provides information about both control flow and data flow when you run a package in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT). Nella scheda Stato sono elencati i contenitori e le attività in ordine di esecuzione, nonché l'ora di inizio e di fine, gli avvisi e i messaggi di errore per ogni contenitore e attività, inclusi quelli relativi al pacchetto stesso.The Progress tab lists tasks and containers in order of execution and includes start and finish times, warnings, and error messages for each task and container, including the package itself. Sono inoltre elencati i componenti del flusso di dati in ordine di esecuzione, nonché informazioni sullo stato, visualizzato in forma di percentuale di completamento, e il numero di righe elaborate.It also lists data flow components in order of execution and includes information about progress, displayed as percentage complete, and the number of rows processed.

Per abilitare o disabilitare la visualizzazione di messaggi nella scheda Stato , attivare o disattivare l'opzione Debug report di stato del menu SSIS .To enable or disable the display of messages on the Progress tab, toggle the Debug Progress Reporting option on the SSIS menu. La disabilitazione del report di stato consente di migliorare le prestazioni durante l'esecuzione di un pacchetto complesso in SQL Server Data ToolsSQL Server Data Tools.Disabling progress reporting can help improve performance while running a complex package in SQL Server Data ToolsSQL Server Data Tools.

Articoli e post di BlogArticles and Blog Posts

Vedere ancheSee Also

Strumenti di risoluzione dei problemi per lo sviluppo di pacchetti Troubleshooting Tools for Package Development
Strumenti di risoluzione dei problemi per l'esecuzione del pacchettoTroubleshooting Tools for Package Execution