Frage

Wie würde man gehen über ein paar Abfragen Profilierungs, die von einer ASP.NET-Anwendung ausgeführt werden? Es gibt einige Software, wo ich arbeite, dass wegen der Datenbank extrem langsam läuft (glaube ich). Die Tabellen haben Indizes, aber es zieht immer noch, weil es mit so viel Daten funktioniert. Wie kann ich das Profil zu sehen, wo ich kann ein paar kleineren Verbesserungen, die hoffentlich zu größeren Geschwindigkeitsverbesserungen führen werden?

Edit:. Ich möchte hinzufügen, dass der Webserver während dieser langen Abfragen Timeout mag

War es hilfreich?

Lösung

SQL Server hat einige ausgezeichnete Werkzeuge, die Sie mit dieser Situation zu helfen. Diese Werkzeuge sind eingebaut in Management Studio (die aufgerufen werden verwendet, um Enterprise Manager + Query Analyzer).

Verwenden Sie SQL Profiler Sie die aktuellen Anfragen aus dem Web-Anwendung kommen zeigen.

Kopieren Sie jeweils das Problem abfragt aus (diejenigen, die viel CPU-Zeit oder IO auffressen). Führen Sie die Abfragen mit "Display Actual Execution Plan". Hoffentlich werden Sie einigen offensichtlichen Index sehen, das fehlt.

Sie können auch die Tuning-Assistenten ausführen (die entsprechende Schaltfläche befindet sich direkt neben „-Display tatsächlichen Ausführungsplan“. Es wird die Abfrage ausführen und Vorschläge machen.

In der Regel, wenn Sie bereits Indizes und Abfragen haben noch langsam ausgeführt werden, müssen Sie die Abfragen in einer anderen Art und Weise neu schreiben.

Sie alle Ihre Anfragen in gespeicherten Prozeduren zu halten macht diesen Job viel einfacher.

Andere Tipps

SQL Server zum Profil, verwenden Sie die SQL Profiler .

Und Sie können benutzen ANTS Profiler von Red Gate zum Profil Ihr Code.

Ein weiterer .NET Profiler, die gut mit ASP.NET spielt, ist DotTrace . Ich habe es persönlich in Anspruch genommen und fand viele Engpässe in meinem Code.

Ich glaube, Sie haben die Antwort Sie die Abfragen profilieren müssen. Dies ist jedoch der einfachste Teil des Performance-Tuning. Sobald Sie wissen, dass es die Abfragen und nicht das Netzwerk oder die App, wie finden Sie und das Problem beheben?

Performance-Tuning ist eine komplexe Sache. Aber es einige Orte auf den ersten Blick. Sie sagen, Sie viele Daten zurückgeben? Kehren Sie mehr Daten als nötig? Kehren Sie wirklich nur die Spalten und Datensätze, die Sie benötigen? 100 Spalten der Rückkehr von select * verwenden kann viel langsamer als die 5 Spalten Rückkehr Sie tatsächlich verwenden.

Sind Ihre Indizes und Statistiken up-to-date? Sehen Sie, wie statisistcs und Re-Index in BOL zu aktualisieren, wenn Sie dies in einer Weile nicht getan haben. Haben Sie Indizes für die alle Felder beitreten? Wie über die Felder in der where-Klausel.

Haben Sie einen Cursor verwendet? Haben Sie Subqueries verwendet? Wie wäre es gewerkschafts wenn Sie verwenden kann es zur Vereinigung geändert werden?

Sind Ihre Fragen sargable (google, wenn nicht mit dem Begriff.)

Verwenden Sie deutlich, wenn Sie Gruppe verwenden könnte?

Sind Sie Sperren zu bekommen?

Es gibt viele andere Dinge auf diese zu betrachten sind nur einen Startplatz.

Wenn es eine bestimmte Abfrage oder gespeicherte Prozedur I stimmen will, ich habe vor der Abfrage auf Statistiken gefunden Drehen sehr nützlich zu sein:

SET STATISTICS TIME ON
SET STATISTICS IO ON

Wenn Sie auf Statistiken in Query Analyzer aktivieren, werden die Statistiken in der Registerkarte Meldungen im Ergebnisbereich angezeigt.

IO Statistiken haben für mich besonders nützlich, weil es mich wissen lässt, wenn ich einen Index benötigen. Wenn ich eine hohe Lesezählung von den IO-Statistiken sehen, könnte ich versuchen, verschiedene Indizes für die betroffenen Tabellen hinzufügen. Wie ich einen Index versuchen, betreibe ich die Abfrage erneut, um zu sehen, ob die Lesezählung nach unten gegangen ist. Nach einigen Iterationen kann, finde ich in der Regel den besten Index (es) für die beteiligten Tabellen.

Hier sind Links zu MSDN für diese Statistiken Befehle:

STATISTICS TIME SET

SET STATISTICS IO

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top