Come risolvere la query con esecuzione lenta su SQL Server 7.0 o su versioni successive

Traduzione articoli Traduzione articoli
Identificativo articolo: 243589 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Viene descritto come gestire un problema di prestazioni che potrebbero verificarsi le applicazioni in combinazione con Microsoft SQL Server: rallentare le prestazioni di una query specifiche o di un gruppo di query. Se si sta tentando di risolvere un problema di prestazioni, ma non si Ŕ isolato il problema per una query specifiche o di un piccolo gruppo di query che eseguono pi¨ lentamente del previsto, consultare l'articolo della Microsoft Knowledge Base prima di continuare:
224587HOW TO: Troubleshoot prestazioni delle applicazioni con SQL Server
In questo articolo si basa sul presupposto che Ŕ stato utilizzato l'articolo 224587 per restringere l'ambito del problema e che si abbia catturato una traccia SQL Profiler con le colonne specifiche eventi e dati in dettaglio nell'articolo 224587.

La messa a punto delle query di database pu˛ risultare un'operazione particolarmente complessa. Le sezioni seguenti illustrano gli elementi comuni per esaminare quando si sta indagando le prestazioni delle query.

Nota Se si utilizza SQL Server 2005, utilizzare SQL Server Management Studio anzichÚ SQL Query Analyzer e utilizzare Ottimizzazione guidata motore di database invece di ottimizzazione guidata indici.

Verificare l'esistenza di indici il correzione

Uno dei controlli primo da eseguire quando si verificano tempi di esecuzione query lenta Ŕ un'analisi dell'indice. Se si sta indagando una singola query, Ŕ possibile utilizzare l'opzione di Esecuzione di analisi indice in SQL Query Analyzer, se si dispone di una traccia SQL Profiler di un elevato carico di lavoro, Ŕ possibile utilizzare Ottimizzazione guidata indici. Entrambi questi metodo utilizzano l'utilitÓ di ottimizzazione delle query di SQL Server per determinare quali indici potrebbero risultare utili per le query specificate. Questo Ŕ un metodo molto efficiente per determinare se gli indici corretti presente nel database.

Per informazioni su come utilizzare Ottimizzazione guidata indici, vedere l'argomento "Index Tuning Wizard" nella documentazione in linea di SQL Server 7.0.

Se Ŕ stato effettuato l'aggiornamento l'applicazione da una versione precedente di SQL Server, indici diversi potrebbero risultare pi¨ efficienti in SQL Server 7.0 a causa delle utilitÓ di ottimizzazione delle query e modifiche del motore di archiviazione. Ottimizzazione guidata indici consente di determinare se una modifica nella strategia di indicizzazione potrebbe migliorare le prestazioni.

Per ulteriori informazioni su come utilizzare Ottimizzazione guidata motore di database invece di in SQL Server 2005 con Ottimizzazione guidata indici, vedere i seguenti argomenti nella documentazione in linea di SQL Server 2005 (informazioni in lingua inglese):
  • Differenze tra database unitÓ ottimizzazione verificato e ottimizzazione guidata indici
  • Esercitazione con Ottimizzazione guidata motore di database

Rimuovere tutte le query, tabelle e hint di join

Gli hint hanno prioritÓ rispetto all'ottimizzazione delle query e possono impedire all'utilitÓ di ottimizzazione delle query di scegliere il piano di esecuzione pi¨ veloce. Causa di modifiche di ottimizzazione, hint che miglioramento delle prestazioni nelle versioni precedenti di SQL Server potrebbe essere effetto o che potrebbe essere effettivamente influire negativamente sulle prestazioni in SQL Server 7.0. Inoltre, gli hint di join possono causare una riduzione delle prestazioni in base alle seguenti motivi:
  • Gli hint di join impediscono di una query ad hoc idoneo per la parametrizzazione automatica e nella cache il piano di query.
  • Quando si utilizza un hint di join significa che si desidera applicare l'ordine di join a tutte le tabelle della query, anche se tali join non utilizzano in maniera esplicita un hint.
Se la query che si sta analizzando include hint, rimuoverli e quindi rivalutare le prestazioni.

Esaminare il piano di esecuzione

Dopo avere verificato che esistono degli indici corretti e che nessun hint sono limitazione dell'utilitÓ di ottimizzazione generare un piano efficiente, Ŕ possibile esaminare il piano di esecuzione query. ╚ possibile utilizzare uno dei metodi seguenti per visualizzare il piano di esecuzione per una query:
  • SQL Profiler

    Se Ŕ stato catturato l'evento di Stato piano in SQL Profiler, verificherÓ immediatamente prima dell'evento StmtCompleted per la query per il processo di sistema particolare SPID (ID).
  • SQL Query Analyzer: Showplan grafico

    Con la query selezionata nella finestra query, fare clic sul menu query e quindi fare clic su Visualizza piano di esecuzione stimato .

    Nota : se la stored procedure o batch Crea e fa riferimento a tabelle temporanee, Ŕ necessario utilizzare un'istruzione SET STATISTICS PROFILE ON o creare esplicitamente le tabelle temporanee prima di visualizzare il piano di esecuzione.
  • SHOWPLAN_ALL e SHOWPLAN_TEXT

    Per ricevere una versione in testo del piano di esecuzione stimato, Ŕ possibile utilizzare le opzioni SET SHOWPLAN_ALL e SET SHOWPLAN_TEXT. Per ulteriori dettagli, vedere gli argomenti "SET SHOWPLAN_ALL (T-SQL)" e "SET SHOWPLAN_TEXT (T-SQL)" nella documentazione in linea di SQL Server 7.0.

    Nota : se la stored procedure o batch Crea e fa riferimento a tabelle temporanee, Ŕ necessario utilizzare l'opzione SET STATISTICS PROFILE ON o creare esplicitamente le tabelle temporanee prima di visualizzare il piano di esecuzione.
  • STATISTICS PROFILE

    Quando si visualizza il piano di esecuzione stimato, graficamente oppure utilizzando SHOWPLAN, la query non viene effettivamente eseguita. Di conseguenza, se si creano tabelle temporanee in un batch o una stored procedure, Ŕ Impossibile visualizzare i piani di esecuzione stimato, poichÚ le tabelle temporanee non saranno disponibile. STATISTICS PROFILE esegue prima la query e quindi visualizza il piano di esecuzione effettivo. Per ulteriori dettagli, vedere l'argomento "SET STATISTICS PROFILE (T-SQL)" nella documentazione in linea di SQL Server 7.0. Quando Ŕ in esecuzione in SQL Query Analyzer, viene visualizzata nel formato grafico nella scheda Piano di esecuzione nel riquadro dei risultati.
Per ulteriori informazioni su come visualizzare il piano di esecuzione stimato in SQL Server 2005, vedere l'argomento "Come visualizzare il piano di esecuzione stimato" nella documentazione in linea di SQL Server 2005.

Esaminare l'output di Showplan

Output di Showplan fornisce molte informazioni sul piano di esecuzione che utilizza SQL Server per una particolare query. I dettagli delle informazioni e gli eventi generati sono descritti in dettaglio nel capitolo "Optimizing Database Performance" della documentazione in linea di SQL Server 7.0. Di seguito sono alcuni aspetti del piano di esecuzione che Ŕ possibile visualizzare per determinare se si sta utilizzando il miglior piano di base:
  • Corretto utilizzo di indice

    L'output di showplan Visualizza ogni tabella che Ŕ coinvolto nella query e il percorso di accesso che Ŕ utilizzato per ottenere dati da esso. Con grafica showplan, spostare il puntatore su una tabella per visualizzare i dettagli per ogni tabella. Se un indice Ŕ in uso, verrÓ visualizzato "Index Seek", se un indice non Ŕ in uso, Ŕ visualizzato "Table Scan" per un heap oppure "Clustered Index Scan" per una tabella che include un indice cluster. "Analisi indice cluster" indica che la tabella viene analizzata tramite l'indice cluster, non che l'indice cluster viene utilizzato per l'accesso direttamente singole righe.

    Se si determina che esiste un indice utile e non viene utilizzato per la query, Ŕ possibile imporre l'indice utilizzando un hint di indice. Vedere l'argomento "FROM (T-SQL)" nella documentazione in linea di SQL Server per ulteriori informazioni sull'hint di indice.
  • Correggere l'ordine di join

    L'output di showplan indica in quale ordine in join le tabelle che sono coinvolti in una query. Per i join ciclo nidificato, la tabella superiore elencato Ŕ la tabella esterna e deve essere il meno elevato tra le due tabelle. Per gli hash join la tabella superiore diventa l'input di costruzione e anche in questo caso dovrebbe essere la pi¨ piccola delle due tabelle. Si noti tuttavia che l'ordine Ŕ meno importanti in quanto il processore di query possibile annullare la generazione e probe di input in fase di esecuzione se rileva che l'ottimizzatore stabilito errato. ╚ possibile determinare quale tabella restituisce un numero di righe inferiore verificando la stima del conteggio delle righe nell'output di Showplan.

    Se si determina che la query potrebbe beneficiare di un ordine di join diverso, Ŕ possibile imporre l'ordine di join con un hint di join. Vedere l'argomento "FROM (T-SQL)" nella documentazione in linea di SQL Server 7.0 per ulteriori informazioni sugli hint di join.

    Nota : utilizzo un hint di join in una query di grandi dimensioni forza implicitamente l'ordine di join per le altre tabelle della query come se Ŕ stato impostato FORCEPLAN.
  • Tipo di join corretto

    Ciclo di SQL Server utilizza nidificati, hash e merge join. Se una query con un tempo di esecuzione eccessivamente lento utilizza una tecnica di join al di sopra di un'altra, sarÓ possibile provare a forzare un diverso tipo di join. Ad esempio, se una query utilizza un hash join, sarÓ possibile applicare un join ciclico nidificato utilizzando l'hint di join LOOP. Per ulteriori informazioni sugli hint di join, vedere l'argomento "FROM (T-SQL)" della documentazione di SQL Server 7.0.

    Nota : utilizzo un hint di join in una query di grandi dimensioni forza implicitamente il tipo di join per le altre tabelle della query come se Ŕ stato impostato FORCEPLAN.
  • Esecuzione parallela

    Se si utilizza un computer multiprocessore, Ŕ possibile esaminare anche se un piano parallelo Ŕ in uso. Se parallelismo Ŕ in uso, verrÓ visualizzato un evento PARALLELISM (Gather Streams). Se una determinata query Ŕ lenta quando utilizza un piano parallelo, Ŕ possibile imporre un piano non parallelo utilizzando l'hint OPTION (MAXDOP 1). Per ulteriori informazioni in proposito, vedere l'argomento "SELECT (T-SQL)" della documentazione in linea di SQL Server 7.0.
Per ulteriori informazioni sull'utilizzo di output del piano esecuzione Showplan in SQL Server 2005, vedere i seguenti argomenti nella documentazione in linea di SQL Server 2005 (informazioni in lingua inglese):
  • Come salvare un piano di esecuzione in formato XML
  • Showplan XML
  • Protezione di Showplan
attenzione : poichÚ query optimizer sceglie in genere il migliore piano di esecuzione per una query, Microsoft consiglia di utilizzare gli hint di join, i parametri di query e hint di tabella solo come ultima risorsa, e solo se sono agli amministratori di un database esperti.

Riferimenti

Negli argomenti seguenti nella documentazione in linea di SQL Server 7.0 fornite informazioni sulle query di ottimizzazione:
  • "Ottimizzazione delle prestazioni di applicazioni tramite il recupero efficiente dei dati."
  • "Ottimizzazione di query"
  • "Suggerimenti di ottimizzazione di query"
  • "Suggerimenti a Transact-SQL"

ProprietÓ

Identificativo articolo: 243589 - Ultima modifica: giovedý 15 dicembre 2005 - Revisione: 5.4
Le informazioni in questo articolo si applicano a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Chiavi:á
kbmt kbhowtomaster KB243589 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 243589
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com