Identificare i colli di bottiglia

Si applica a:SQL Serverdatabase SQL di AzureAzure SQL Istanza gestitaDatabase SQL in Microsoft Fabric

L'accesso simultaneo alle risorse condivise causa 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 cause dei colli di bottiglia includono:

  • 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.

  • Malfunzionamento delle risorse.

  • Configurazione non corretta delle risorse.

Analisi dei colli di bottiglia

Le durate eccessive di vari eventi sono indicatori di colli di bottiglia che possono essere ottimizzati.

Per 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 della 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. I sistemi operativi Microsoft Windows effettuano un paging eccessivo scambiando dati da e verso il disco man mano che le pagine sono necessarie.
utilizzo 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 non necessarie, ad esempio utilizzando gli indici.
Connessioni utente Se il numero di utenti che accede al server simultaneamente è molto elevato, le prestazioni potrebbe risultare inferiori.
Blocchi di bloccaggio 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.