Wie Messen Sie die Leistung einer gespeicherten Prozedur?
Bin ich mit einer version von SQL Server 2005 nicht unterstützt werden die profiler, um herauszufinden, wie man am besten vergleichen Sie die Leistung von zwei gespeicherte Prozeduren. Ich habe den Ausführungsplan für jede, aber es ist mir nicht klar, welche der zur Verfügung gestellten Metriken sollte ich auf konzentrieren. Gehe ich durch und addieren Sie die verschiedenen Kosten? Was ist der beste Ansatz?
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Blick auf diese Artikel: Die Messung der SQL-Leistung
Wenn Sie nicht wollen, um sich zu registrieren und kostenloses Konto, hier ist eine Lösung 1:
2.:
3. Platz:
Btw, diese Seite hat einige nette Artikel. Ich würde empfehlen, sich zu registrieren. Es ist kostenlos.
Die Frage ist, was du optimieren? Ist es für Geschwindigkeit oder Ressourcen verwendet?
Wenn speed, dann im query analyzer aus, ich würde Aussehen, bei der Ausführung zwischen mehreren ausgeführt wird, änderungen vornehmen und die Zeit Sie wieder.
Wenn es die Ressourcen dann würde ich schauen, durch den Ausführungsplan. In diesem Fall würde ich anfangen, mit den noch schlimmer Straftäter und meinen Weg unten in der Liste. Hinzufügen von Ihnen bis wird Ihnen sagen, die über all die Leistung, sondern den meisten Fällen ist es ein Element oder 2, das ist der Flaschenhals.
wenn Sie mit so etwas wie
SET SHOWPLAN_ALL AUF
Blick auf die TotalSubtreeCost Spalte Wert für die Zeile mit der EXE YourProcedureName
dies könnte helfen:
http://technet.microsoft.com/en-us/library/ms180765.aspx
Wie die meisten Fragen, die Antwort hängt davon ab... In der letzten Analyse, ist die einzige Maßnahme, die zählt, ist die end-die Wahrnehmung der Nutzer, die betroffen sein können durch viele Dinge,darunter nicht nur die gespeicherte Prozedur, aber Netzwerk-performance, Nutzungsverhalten (ist die sProc genannt wird, 20x/Tag, oder 1000 mal/Sekunde?), etc., - und die sProc kann nicht der entscheidende Faktor sein.
Aber wenn die gespeicherte Prozedur ist der "Stück, wenn Sie das puzzle" das bedeutet, dass der erhebliche negative Auswirkungen auf die end-user-Wahrnehmung von einigen, dann haben Sie Blick auf die verstrichene Zeit, die zum ausführen der gespeicherten Prozedur. Aber diese selbst beeinflusst werden können, von zahlreichen zugrunde liegenden Metriken, und um etwas dagegen zu tun, müssen Sie analysieren, Sie alle zu bestimmen, welche von Ihnen die größere oder übergeordnete Mitwirkender, um die gesamte gespeicherte Prozedur performance.
Konnte man immer rig eine Testumgebung zu rufen Sie Ihre gespeicherten Prozeduren und Messen Sie die Anruf-Zeiten. Leider wirst du nicht um die details über genau, welche Teile der Gespeicherten Prozedur sind, was die slow-down.
Konnte man immer führen Sie die Gespeicherte Prozedur von hand in Query Analyzer, und Messen die Ergebnisse, wie gut. Die .NET Gurt einfach automatisiert den Prozess für Sie.
Den einfachen low-Stirn-Lösung ist, führen Sie Sie mit print-Anweisungen drucken der Zeitpunkt der Ausführung über die verschiedenen Teile. Dies wird nicht helfen, wenn das performance-problem ist subtiler und in der Produktion nur, aber wenn Sie es reproduzieren können in Ihrer test-Umgebung, sollten Sie in Ordnung sein.
Eine nützliche Technik, wenn Sie versuchen, vergleichen Sie die Leistung von zwei procs oder Aussagen ist, wählen Sie Blöcke von sql in query analyzer, und führen Sie die Abfrage-plan. Der plan wird Ihnen sagen, die Kosten Prozentsatz eines jeden Blocks relativ zu einem anderen. Ist dies nicht vollen Beweis. Ich habe es gesehen, sagen Sie mir, war billiger, als es war deutlich teurer, wenn Sie tatsächlich ausgeführt werden, aber zum größten Teil ist es eine schöne, schnelle trick.