Le prestazioni delle applicazioni database-driven è spesso dipendente da quella del software SQL Server , e rallentamenti o timeout può verificarsi per una serie di motivi . Hardware o colli di bottiglia della memoria , record bloccati o procedure problematici possono tutti giocare un ruolo nelle questioni di prestazioni SQL . Mentre la risoluzione dei problemi più di SQL Server richiede l'accesso come amministratore e la conoscenza di database , le query individuazione dei problemi e l'ottimizzazione sia del server e del database impediranno più problemi lungo la strada. Provoca
Perché timeout e problemi di prestazioni possono derivare da una varietà di cause , si dovrà sviluppare una strategia diagnostica sistematica al fine di individuare e risolvere un problema. Microsoft consiglia di iniziare il test utilizzando SQL Profiler , che registra le azioni del server in modo che è possibile isolare il problema . Per i dettagli sulla configurazione di SQL Profiler per eseguire una traccia , vedi il link in Risorse . SQL Server 2012 include anche un'interfaccia utente per l' estesa Eventi Profiler , che sarà completamente prendere il posto di SQL Profiler in versioni future .
Blocco delle
questioni più timeout verificarsi causa di record bloccato . Il blocco si verifica quando una connessione si blocca un record che un'altra connessione deve bloccare usando un tipo di blocco diverso . Il blocco è in realtà un comportamento normale , ma può causare rallentamenti quando le query con esecuzione lenta sono anche bloccati , un indice manca o in altre circostanze . Mentre per impostazione predefinita il server attenderà indefinitamente per un record bloccato , gli amministratori utilizzano spesso l'impostazione " LOCK_TIMEOUT " per evitare rallentamenti del server . Per determinare se il server sta avendo problemi con il blocco, eseguire la stored procedure seguente , quando il server sta vivendo carico tipico :
exec sp_who
Guardate in uscita per le voci diverse da 0 nel " , colonna blk " . Se esistono, è possibile utilizzare l'output di SQL Profiler a zero su query con esecuzione lenta che può essere la causa del blocco .
Inappropriato del piano di esecuzione
quando il server esegue una query , utilizza i dati disponibili per ottimizzare come si esegue la query . Di tanto in tanto le congetture server sbagliato , con un conseguente piano di ottimizzazione male. Se il cattivo piano viene caricato nella cache , può eseguire più e più volte , rallentando ogni query in modo significativo o timeout. Utilizzando i dati del SQL Profiler o SQL Query Analyzer , è possibile individuare le query con esecuzione lenta e regolare in modo che vengano eseguite in modo più rapido .
Colli di bottiglia del sistema
di sistema le prestazioni possono anche influire sulle prestazioni di SQL Server e causare timeout . Per determinare se il sistema è in fase di problemi di carico , eseguire Performance Monitor e cercare maggiore del solito utilizzo della CPU o più a lungo del solito le richieste di I /O . Come con i record bloccati , corrispondente al maggiore carico con i dati di SQL Profiler vi aiuterà a zero su query , compilazioni o altre procedure che assumono grandi quantità di risorse . Se la regolazione delle procedure è impossibile , si dovrà migliorare la memoria RAM del server , la potenza di elaborazione e le prestazioni del disco .