Timeout di SQL Server prestazioni

November 20

Timeout di SQL Server prestazioni


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. i colli di bottiglia hardware o di memoria, bloccati record o procedure problematici possono svolgere un ruolo in problemi di prestazioni SQL. Mentre la risoluzione di gran parte dei problemi di SQL Server richiede l'accesso come amministratore e la conoscenza del database, individuando le query problematiche e ottimizzare sia il server e il database impedirà più problemi lungo la strada.

Le cause

Perché timeout e problemi di prestazioni possono derivare da una varietà di cause, si dovrà sviluppare una strategia sistematica di risoluzione dei problemi, 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 da poter identificare il problema. Per i dettagli su come configurare SQL Profiler per eseguire una traccia, vedere il link in Risorse. SQL Server 2012 include anche una interfaccia utente per le estese Eventi Profiler, che avrà completamente il posto di SQL Profiler nelle versioni future.

Blocco

La maggior parte dei problemi di timeout si verificano a causa di record bloccati. Il blocco si verifica quando una connessione blocca un record che un'altra connessione deve bloccare utilizzando un diverso tipo di blocco. Il blocco è in realtà un comportamento normale, ma può causare rallentamenti quando le query lenta esecuzione sono anche bloccati, un indice è mancante o in certe altre circostanze. Mentre per impostazione predefinita il server attenderà indefinitamente per un record bloccato, gli amministratori spesso usano il "LOCK_TIMEOUT" impostazione per evitare rallentamenti dei server. Per determinare se il server sta avendo problemi con il blocco, eseguire il seguente stored procedure quando il server è sperimentare carico tipico:

sp_who exec

Guardate in uscita per le voci diverse da 0 nella colonna "BLK". Se esistono, è possibile utilizzare l'output SQL Profiler a zero su query lenta esecuzione che possono causare il blocco.

Piano di esecuzione Bad

Quando il server esegue una query, utilizza i dati disponibili per ottimizzare come si esegue la query. Di tanto in tanto il server indovina sbagliato, con un conseguente piano di ottimizzazione male. Se il cattivo programma viene caricato nella cache, può eseguire più e più volte, rallentando ogni query in modo significativo o timeout. Utilizzando i dati dal Profiler SQL o SQL Query Analyzer, è possibile individuare slow-running query e melodia in modo che corrono più velocemente.

sistema di colli di bottiglia

Le prestazioni del sistema può anche influire sulle prestazioni di timeout di SQL Server e la causa. Per determinare se il sistema è in fase di problemi di carico, Performance Monitor correre e cercare l'utilizzo della CPU più alto del solito o richieste di I / O più lunghi del solito. Come con i record bloccati, abbinando l'aumento del carico con i dati da 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 RAM del server, la potenza di elaborazione o disco prestazioni.