Individuare i colli di bottiglia

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

In seguito all'accesso simultaneo alle risorse condivise si possono verificare colli di bottiglia. I colli di bottiglia in genere sono inevitabili e presenti in qualsiasi sistema software. È tuttavia necessario identificare e ottimizzare le situazioni di eccesso di domanda, in quanto una domanda eccessiva delle risorse condivise comporta un rallentamento dei tempi di risposta.

Le possibili cause dei colli di bottiglia sono:

  • Risorse insufficienti che rendono necessari l'aggiunta di componenti o l'aggiornamento dei componenti disponibili.

  • Carichi di lavoro non distribuiti equamente tra risorse dello stesso tipo, ad esempio monopolizzazione di un disco.

  • Funzionamento non corretto delle risorse.

  • Configurazione non corretta delle risorse.

Analisi dei colli di bottiglia

La durata eccessiva di alcuni eventi segnala la presenza di colli di bottiglia che è possibile ottimizzare.

Ad esempio:

  • È possibile che un altro componente impedisca che il processo di caricamento raggiunga il componente in uso, con un conseguente incremento dei tempi necessari per completare il caricamento.

  • Le richieste client potrebbero richiedere tempi più lunghi a causa di traffico di rete intenso.

Per la valutazione delle prestazioni del server allo scopo di individuare eventuali colli di bottiglia, è necessario eseguire il monitoraggio delle cinque aree fondamentali descritte nella tabella seguente.

Possibile area in cui è presente un collo di bottiglia Effetti sul server
Utilizzo memoria Se la memoria allocata per Microsoft SQL Server o disponibile per il sistema non è sufficiente, le prestazioni risultano inferiori. I dati infatti devono essere letti nel disco anziché direttamente nella cache dei dati. Microsoft Windows NT esegue un paging eccessivo con uno swapping dei dati da e nel disco in base alle pagine richieste.
Uso della CPU Se la frequenza di utilizzo della CPU risulta costantemente elevata, potrebbe essere necessario ottimizzare le query Transact-SQL o aggiornare la CPU.
Input/output (I/O) del disco Le query Transact-SQL possono essere ottimizzate per ridurre le operazioni di I/O del disco non necessarie, ad esempio tramite l'uso di indici.
Connessioni utente Se il numero di utenti che accede al server simultaneamente è molto elevato, le prestazioni potrebbe risultare inferiori.
Blocchi di blocco L'utilizzo di applicazioni progettate in modo non corretto può causare blocchi e ostacolare la concorrenza, con un conseguente rallentamento dei tempi di risposta e una diminuzione della velocità effettiva.

Vedi anche

Monitorare l'uso della CPU
Monitorare l'uso del disco
Monitorare l'uso della memoria
Oggetto General Statistics di SQL Server
Oggetto Locks di SQL Server