Domanda

Adoro il modo in cui posso profilare un'app Java / .Net per trovare colli di bottiglia nelle prestazioni o problemi di memoria. Ad esempio, è molto facile trovare un collo di bottiglia nelle prestazioni guardando il albero delle chiamate con tempi di esecuzione e conteggi delle chiamate per metodo . In SQL Server, ho archiviato le procedure che chiamano altre stored procedure che dipendono dalle viste, che è simile ai metodi Java / .Net che chiamano altri metodi. Quindi sembra che lo stesso tipo di profiler sarebbe molto utile qui. Tuttavia, ho guardato in lungo e in largo e non sono riuscito a trovarne uno. Qualcuno è a conoscenza di tali strumenti, sia per SQL Server che per qualsiasi altro DBMS?

Aggiornamento: grazie per le risposte su SQL Server Profiler, ma questo strumento è molto limitato. Dai un'occhiata a lo screenshot .

È stato utile?

Soluzione

Scopri SQL Nexus Tool . Questo ha alcuni buoni rapporti sull'identificazione dei colli di bottiglia. SQL Nexus è uno strumento che consente di identificare la causa principale dei problemi di prestazioni di SQL Server. Carica e analizza i dati sulle prestazioni raccolti da SQLDiag e PSSDiag. Può ridurre drasticamente il tempo impiegato per l'analisi manuale dei dati.

In uno dei libri di Inside SQL 2005 (forse T-SQL Querying), c'era una tecnica interessante in cui l'autore scarica l'output del profiler SQL in una tabella o in un file Excel e applica un perno per ottenere l'output in un simile formato come screenshot.

Non ho visto nessuno strumento SQL incorporato che ti dia quel tipo di analisi. Un altro utile dopo .

Altri suggerimenti

Oltre a SQL Server Profiler, come menzionato in un commento di @Galwegian, controlla anche il tuo piano di esecuzione quando esegui una query.

http://www.sql-server-performance.com/tips /query_execution_plan_analysis_p1.aspx
http://en.wikipedia.org/wiki/Query_plan

Un altro intero thread sul profiler di SQL Server:

Identificazione dei problemi di prestazioni di SQL Server

Capisco di cosa stai parlando, ma in genere l'ottimizzazione del database avviene a un livello più fine. Se l'attività del database è gestita da un client, dovresti essere in grado di utilizzare il profiler client esistente per ottenere il tempo totale su ogni passaggio e quindi indirizzare i frutti sospesi (sia nel database o meno).

Quando è necessario profilare in dettaglio un particolare passaggio del database, è possibile utilizzare profiler e una traccia.

Tipicamente, l'accesso al database ha una certa granularità che viene indirizzata su base individuale e l'attività del database non è lineare con tutti i tipi di accesso dell'utente in corso, mentre un profiler di programma in genere sta profilando un percorso lineare di codice.

Come accennato, SQL Server Profiler, che è ottimo per verificare quali parametri si sta passando a SQL ecc. Non ti mostrerà un albero di esecuzione se è quello che ti serve. Per questo, tutto ciò a cui riesco a pensare è usare Show Plan per vedere esattamente cosa viene eseguito in fase di esecuzione. Per esempio. se stai chiamando uno sp che chiama una vista, Profiler ti mostrerà solo che lo sp è stato eseguito e quali parametri sono stati passati. Inoltre, il Performance Monitor di Windows ha metriche prestazionali di runtime specifiche per SQL Server. Puoi eseguirlo sul server o collegarti in remoto.

Per trovare i colli di bottiglia delle prestazioni, è possibile utilizzare Ottimizzazione guidata motore di database (disponibile nel menu Strumenti di SQL Server Management Studio. Fornisce suggerimenti per l'ottimizzazione delle query e offerte per ottimizzarle automaticamente (ad esempio, creare gli indici appropriati, ecc. .).

È possibile utilizzare S ql Profiler - che copre la profilazione aspetto, ma tendo a pensarlo più come uno strumento di registrazione. Per diagnosticare le prestazioni, dovresti probabilmente guardare il piano di query .

C'è il profiler del server sql, ma nonostante il suo nome, non fa quello che vuoi, dal suono della tua domanda. Ti mostrerà una vista dettagliata di tutte le chiamate in corso nel database. È meglio per la risoluzione dei problemi dell'app nel suo insieme, non solo uno sproc alla volta

Sembra che tu debba visualizzare il piano di esecuzione delle tue query / spocs in analizzatore di query e che ti darà qualcosa di simile ai dati che stai cercando.

Come indicato da diverse risposte, SQL Profiler mostrerà ciò che stai chiedendo. Quello che devi essere sicuro di fare è attivare gli eventi SP: StmtCompleted, che è nel gruppo Stored Procedures, e se vuoi anche i piani di query attiva Showplan XML Statistics Profile, che è nel gruppo Performance . L'ultimo piano XML fornisce una descrizione grafica e mostra le righe effettive elaborate da ogni passaggio del piano.

Se il profiler sta rallentando l'app, filtrala il più possibile e considera di passare a una traccia lato server.

HTH Andy

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