Domanda

In Forse normalizzare non è normale Jeff Atwood dice: "Stai misurando automaticamente tutte le domande che scorrono attraverso il tuo software, giusto?" Non lo sono ma mi piacerebbe.

Alcune funzionalità dell'applicazione in questione:

È stato utile?

Soluzione

Oltre alla menzione di Brad di SQL Profiler, se vuoi farlo nel codice, allora tutte le chiamate al database devono essere incanalate attraverso una libreria comune.Inserisci lì il codice temporale e voilà, sai quanto tempo impiega ogni query nel tuo sistema.

Un singolo punto di accesso al database è una caratteristica abbastanza standard di qualsiasi ORM o livello di database, o almeno lo è stata in qualsiasi progetto su cui ho lavorato finora!

Altri suggerimenti

Profilo SQL è lo strumento che utilizzo per monitorare il traffico che scorre sul mio SQL Server.Ti consente di raccogliere dati dettagliati sul tuo SQL Server.SQL Profiler è stato distribuito con SQL Server almeno da SQL Server 2000 (ma probabilmente anche prima).

Altamente raccomandato.

Dai un'occhiata a questo capitolo che Jeff Atwood e io abbiamo scritto sull'ottimizzazione delle prestazioni dei siti web.Copriremo molti argomenti, ma ci sono molti aspetti relativi al tracciamento e all'ottimizzazione del database:Velocizza il tuo sito:8 suggerimenti sulle prestazioni ASP.NET

IL Lasciar cadere le cose Il progetto su CodePlex ha una classe per sincronizzare i blocchi di codice.La classe si chiama TimedLog.Implementa IDisposable.Avvolgi il blocco di codice che desideri cronometrare in un'istruzione using.

Se utilizzi rails, registra automaticamente tutte le query SQL e il tempo impiegato per l'esecuzione nel file di registro di sviluppo.

Lo trovo molto utile perché se ne vedi uno che impiega un po' di tempo, è sufficiente copiarlo e incollarlo direttamente dallo schermo/file di registro e inserire "spiega" davanti ad esso in mysql.

Non è necessario scavare nel codice e ricostruire cosa sta succedendo.

Inutile dire che ciò non accade in produzione poiché esaurirebbe lo spazio su disco in circa un'ora.

Se definisci una factory che crea SqlCommands per te e la chiami sempre quando hai bisogno di un nuovo comando, puoi restituire un RealProxy a un SqlCommand.

Questo proxy può quindi misurare per quanto tempo ExecuteReader / ExecuteScalar ecc.usa un cronometro e registralo da qualche parte.Il vantaggio di utilizzare questo tipo di metodo rispetto a SQL Server Profiler è che è possibile ottenere tracce di stack complete per ogni parte di SQL eseguita.

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