Individuare i colli di bottiglia
Si applica a: SQL Server, Database SQL di Azure e Istanza 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