Elenco di controllo per l'analisi delle query con esecuzione rallentata
Una durata più lunga del previsto per l'esecuzione di query o aggiornamenti può essere dovuta a diverse cause. È possibile che le query con esecuzione rallentata dipendano da problemi di prestazioni correlati alla rete o al computer in cui è in esecuzione SQL Server oppure da problemi relativi alla struttura fisica del database.
Di seguito vengono indicate alcune delle cause più comuni della lentezza di esecuzione di query e aggiornamenti.
Comunicazioni di rete lente.
Memoria insufficiente nel computer server o memoria insufficiente per l'esecuzione di SQL Server.
Mancanza di statistiche utili.
Mancanza di indici utili.
Mancanza di viste indicizzate utili.
Striping dei dati inefficace.
Mancanza di partizionamento utile.
In caso di durata superiore al previsto per l'esecuzione di una query o un aggiornamento, esaminare le domande seguenti, relative alle possibili cause delle query con esecuzione rallentata, illustrate nella sezione precedente:
Suggerimento |
---|
Per risparmiare tempo, esaminare questo elenco di controllo prima di rivolgersi al servizio di supporto tecnico. |
Verificare se il problema di prestazioni può essere legato a un componente diverso dalle query, ad esempio a prestazioni di rete insufficienti. Verificare se il calo delle prestazioni può essere dovuto totalmente o in parte ad altri componenti.
È possibile utilizzare Monitor di sistema di Windows per monitorare le prestazioni di SQL Server e dei componenti non SQL Server correlati. Per ulteriori informazioni, vedere Monitoraggio dell'utilizzo delle risorse (Monitor di sistema).
Se il problema di prestazioni è correlato alle query, individuare la query o il set di query interessato.
Per individuare le query lente, utilizzare SQL Server Profiler. Per ulteriori informazioni, vedere Utilizzo di SQL Server Profiler. Utilizzare le viste a gestione dinamica sys.dm_exec_query_stats e sys.dm_exec_requests per individuare query simili che utilizzano complessivamente un numero elevato di risorse. Per ulteriori informazioni, vedere Ricerca e ottimizzazione di query analoghe tramite valori hash della query e del piano di query.
Modalità di analisi delle prestazioni di una query con esecuzione lenta
Dopo aver identificato la query o le query lente, è possibile analizzare ulteriormente le prestazioni delle query generando un piano Showplan, il quale può essere una rappresentazione di testo, XML o grafica del piano di esecuzione delle query generato da Query Optimizer. È possibile generare un piano Showplan mediante opzioni Transact-SQL SET, SQL Server Management Studio o SQL Server Profiler.
Per informazioni sull'utilizzo delle opzioni Transact-SQL SET per visualizzare piani di esecuzione di testo e XML, vedere Visualizzazione di piani di esecuzione tramite le opzioni SET SHOWPLAN (Transact-SQL).
Per informazioni sull'utilizzo di SQL Server Management Studio per visualizzare piani di esecuzione grafici, vedere Visualizzazione dei piani di esecuzione grafici (SQL Server Management Studio).
Per informazioni sull'utilizzo di SQL Server Profiler per visualizzare piani di esecuzione di testo e XML, vedere Visualizzazione dei piani di esecuzione utilizzando le classi di eventi di SQL Server Profiler.
Le informazioni raccolte da questi strumenti consentono di determinare la modalità di esecuzione di una query tramite Query Optimizer di SQL Server e indicano gli indici utilizzati. Queste informazioni consentono di determinare se per migliorare le prestazioni è necessario riscrivere la query, modificare gli indici nelle tabelle o, talvolta, modificare la struttura del database. Per ulteriori informazioni, vedere Analisi di una query.
Verificare se la query è stata ottimizzata con statistiche utili.
In Query Optimizer vengono utilizzate le statistiche per creare piani di query che consentono di migliorare le prestazioni di esecuzione delle query. Per la maggior parte delle query, Query Optimizer genera già le statistiche necessarie per un piano di query di alta qualità. In alcuni casi, è necessario creare statistiche aggiuntive o modificare la progettazione delle query per ottenere risultati migliori.
Per ulteriori informazioni, vedere Utilizzo di statistiche per migliorare le prestazioni di esecuzione delle query. In questo argomento vengono fornite le linee guida per migliorare l'efficacia delle statistiche per le prestazioni di esecuzione delle query. Nelle linee guida vengono illustrati gli aspetti indicati di seguito.
Utilizzo delle opzioni relative alle statistiche a livello di database. È ad esempio necessario verificare che le opzioni a livello di database per la creazione automatica delle statistiche, AUTO_CREATE_STATISTICS, e per l'aggiornamento automatico delle statistiche, AUTO_UPDATE_STATISTICS, siano impostate su ON. In caso contrario, è possibile che i piani di query non siano ottimali e che le prestazioni di esecuzione delle query siano ridotte.
Determinazione della necessità di creare le statistiche. In alcuni casi, è possibile migliorare i piani di query creando statistiche aggiuntive con l'istruzione CREATE STATISTICS (Transact-SQL). Tali statistiche aggiuntive possono acquisire correlazioni statistiche che non vengono prese in considerazione in Query Optimizer durante la creazione di statistiche per indici o singole colonne.
Determinazione della necessità di aggiornare le statistiche. In alcuni casi, è possibile migliorare il piano di query e le prestazioni di esecuzione delle query aggiornando le statistiche più frequentemente di quanto accada quando AUTO_UPDATE_STATISTICS è impostata su ON. È possibile aggiornare le statistiche mediante l'istruzione UPDATE STATISTICS o la stored procedure sp_updatestats.
Progettazione di query che utilizzano le statistiche in modo efficace. Alcune implementazioni delle query, quali le variabili locali e le espressioni complesse nel predicato di query, possono comportare la definizione di piani di query non ottimali. Per evitare che ciò accada, attenersi alle linee guida relative alla progettazione delle query per un utilizzo efficace delle statistiche.
Verificare se sono disponibili indici adeguati. Verificare se l'aggiunta di uno o più indici può determinare un miglioramento delle prestazioni di esecuzione delle query. Per ulteriori informazioni, vedere Linee guida generali per la progettazione di indici, Individuazione degli indici mancanti e Panoramica su Ottimizzazione guidata motore di database. Ottimizzazione guidata Motore di databasepuò inoltre suggerire la creazione delle statistiche necessarie.
Verificare la presenza di aree critiche per i dati o gli indici. Considerare la possibilità di utilizzare lo striping del disco. È possibile implementare lo striping del disco utilizzando un dispositivo RAID (Redundant Array of Independent Disks) di livello 0, dove i dati vengono distribuiti in più unità disco. Per ulteriori informazioni, vedere Utilizzo di file e filegroup e RAID.
Verificare se Query Optimizer dispone di informazioni appropriate e sufficienti per l'ottimizzazione di una query complessa. Per ulteriori informazioni, vedere Consigli per l'ottimizzazione delle query.
In caso di un volume elevato di dati, verificare se è necessario il partizionamento. Una migliore gestibilità dei dati rappresenta il vantaggio principale del partizionamento, ma se le tabelle e gli indici relativi ai dati sono partizionati in modo analogo, il partizionamento può contribuire anche all'ottimizzazione delle prestazioni. Per ulteriori informazioni, vedere Informazioni sul partizionamento e Ottimizzazione della progettazione fisica di database.
Vedere anche