Domanda

Stiamo avendo sporadici e casuali timeout di query sul nostro cluster di SQL Server 2005.Ho proprio un paio di applicazioni che la utilizzano, quindi sto aiutando nelle indagini.Quando guardando il % il tempo di CPU in regolare ol' Perfmon, si può certamente vedere pegging fuori.Tuttavia, SQL monitor attività dà solo cumulativo CPU e IO il tempo utilizzato da un processo, non di cosa si sta usando in quel momento, o nel corso di un periodo di tempo specifico.Forse potrei usare il profiler ed eseguire una traccia, ma questo cluster è molto molto utilizzato e ho paura che sarei alla ricerca di un ago in un pagliaio.Sto abbaiare contro l'albero sbagliato?

Qualcuno ha alcuni buoni metodi per rintracciare costosi query/processi in questo ambiente?

È stato utile?

Soluzione

Questo vi darà la top 50 istruzioni per la media di tempo di CPU, controlla qui per altri script: http://www.microsoft.com/technet/scriptcenter/scripts/sql/sql2005/default.mspx?mfr=true

SELECT TOP 50
        qs.total_worker_time/qs.execution_count as [Avg CPU Time],
        SUBSTRING(qt.text,qs.statement_start_offset/2, 
            (case when qs.statement_end_offset = -1 
            then len(convert(nvarchar(max), qt.text)) * 2 
            else qs.statement_end_offset end -qs.statement_start_offset)/2) 
        as query_text,
        qt.dbid, dbname=db_name(qt.dbid),
        qt.objectid 
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY 
        [Avg CPU Time] DESC

Altri suggerimenti

Ho trovato il Report Del Dashboard Delle Prestazioni per essere molto utile.Essi sono personalizzate RS report fornito da Microsoft.Basta eseguire il programma di installazione sul PC client e quindi eseguire il programma di installazione.sql istanza di SQL Server.

Dopo di che, fare clic destro su un database (non importa quale) in SSMS e vai Relazioni -> Report Personalizzati.Individuare e selezionare il performance_dashboard_main.rdl che si trova nella cartella \Program Files\Microsoft SQL Server\90 ools\PerformanceDashboard cartella di default.Hai solo bisogno di fare questo una volta.Dopo la prima volta, verrà visualizzata nell'elenco rapporti.

La dashboard principale visualizzazione mostra l'utilizzo della CPU nel tempo, tra le altre cose.È possibile aggiornare di tanto in tanto.Quando si vede un picco, è sufficiente fare clic sulla barra del grafico per ottenere i dati di dettaglio dietro di esso.

Usiamo Quest Spotlight prodotto.Ovviamente è un investimento di tempo e denaro, quindi non potrebbe aiutare nel breve termine, ma se si dispone di un grande ambiente SQL è abbastanza utile.

Come Yaakov dice, eseguire profiler per un paio di minuti in tipica di caricare e salvare i risultati in una tabella che vi permetterà di eseguire query sui risultati rendendo molto più facile individuare eventuali risorse sopraelevazione query.

Profiler può sembrare come un ago in un pagliaio" approccio, ma si può trasformare qualcosa di utile.Provare a correre per un paio di minuti, mentre i database sono in tipica di carico, e vedere se qualsiasi query spiccano come togliere troppo tempo o che usano le risorse in qualche modo.Mentre una situazione come questa potrebbe puntare a una questione generale, potrebbe anche essere legato a qualche problema specifico con uno o due siti, che a complicare le cose abbastanza in determinate circostanze, a causa di prestazioni molto povere di tutto il consiglio.

Eseguire Profiler e filtro per le query che richiedono più di un certo numero di letture.Per l'applicazione su cui ho lavorato, qualsiasi non-reporting query che ha preso più di 5000 legge meritato una seconda occhiata.La tua app può avere una soglia diversa, ma l'idea è la stessa.

Questo programma di utilità da Erland Sommarskog è incredibilmente utile.

E ' una stored procedure si aggiungono al database.Eseguire ogni volta che si desidera vedere quali sono le query attiva e ottenere una buona immagine di blocchi, blocchi, etc.Io lo uso regolarmente quando le cose sembrano gommata up.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top