Condividi tramite


Elaborazione parallela di query

Data aggiornamento: 5 dicembre 2005

In SQL Server 2005 è possibile eseguire query parallele, che consentono di ottimizzare l'esecuzione delle query e le operazioni sugli indici nei computer che dispongono di più microprocessori (CPU). La possibilità di eseguire una query o un'operazione sugli indici in parallelo utilizzando diversi thread del sistema operativo assicura maggiore velocità ed efficienza.

Durante l'ottimizzazione delle query, SQL Server ricerca le query o le operazioni sugli indici che potrebbero trarre vantaggio dall'esecuzione parallela. Nel piano di esecuzione di tali query vengono inseriti operatori di scambio per preparare la query all'esecuzione parallela. Un operatore di scambio è un operatore del piano di esecuzione della query responsabile della gestione dei processi, della ridistribuzione dei dati e del controllo di flusso. L'operatore di scambio include gli operatori logici Distribute Streams, Repartition Streams e Gather Streams come sottotipi, ognuno dei quali può essere incluso nell'output Showplan del piano di esecuzione parallela di una query.

Dopo l'inserimento degli operatori di scambio, si ottiene un piano di esecuzione parallela della query. Questo tipo di piano può utilizzare più di un thread. In un piano di esecuzione seriale, utilizzato da una query non parallela, l'esecuzione è invece affidata a un solo thread. Il numero effettivo di thread utilizzati da una query parallela viene determinato al momento dell'inizializzazione del piano di esecuzione della query e dipende dalla complessità del piano e dal grado di parallelismo. Il grado di parallelismo determina il numero massimo di CPU utilizzate, ma non il numero di thread utilizzati. Il valore del grado di parallelismo viene impostato a livello del server e può essere modificato utilizzando la stored procedure di sistema sp_configure. Questo valore può essere sostituito per singole istruzioni di query o di indice specificando l'hint per la query MAXDOP o l'opzione di indice MAXDOP.

Quando una delle condizioni seguenti è vera, Query Optimizer di SQL Server non utilizza un piano di esecuzione parallela per una query:

  • Il costo dell'esecuzione seriale della query non è sufficientemente elevato da suggerire l'adozione di un piano alternativo di esecuzione parallela.
  • Un piano di esecuzione seriale è considerato più veloce di ogni possibile piano di esecuzione parallela per la query in esame.
  • La query contiene operatori scalari o relazionali che non possono essere eseguiti in parallelo. Alcuni operatori possono richiedere l'esecuzione seriale di una sezione della query o dell'intero piano.

Vedere anche

Concetti

Grado di parallelismo
Esempio di query parallela
Operazioni parallele sugli indici
Opzione max degree of parallelism
Configurazione di operazioni a indici paralleli
Impostazione delle opzioni di un indice

Altre risorse

sp_configure (Transact-SQL)
query_hint (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

5 dicembre 2005

Nuovo contenuto
  • Aggiunta di informazioni sui casi in cui Query Optimizer non utilizza un piano di esecuzione parallela.