Ich habe meinen Produktions-SQL-Server in einem Remote-Datencenter (und die Webserver befinden sich im selben Datencenter). Während der Entwicklung haben wir beobachtet, dass eine bestimmte Ansicht sehr lange dauert (etwa 60-80 Sekunden) in unserem lokalen SQL Server, und wir waren damit einverstanden. Es wurde zur Produktion hochgestuft und wenn ich die gleiche Abfrage in Production DB ausführe (das ist in der Datenzentrale) von meinem lokalen Management Studio Ich sehe, dass die Abfrage dauert ca. 7 Minuten, 17 Sekunden zu laufen (verfügbar in der unteren rechten Ecke des Management-Studio) .Wenn ich einen Profiler lief, sehe ich, dass die Zeit genommen Diese Abfrage auszuführen ist 437101 Mikrosekunden Millisekunden, obwohl es in Management Studio als 7:17 angezeigt wird. , was tatsächlich etwa 437101 Millisekunden ist. Mein DBA sagt, dass in der prod die Ansicht nur etwa 60 bis 80 Sekunden dauert, obwohl ich andere Zahlen von Profiler und Management Studio sehe. Kann mir jemand sagen, was diese Dauer im Profiler und Management Studio bedeutet?
Meine Schätzung: Dauer zwischen dem Senden des letzten Anforderungsbytes und dem Empfangen des letzten Antwortbytes vom Server. Die Kundenstatistiken waren wie folgt: Verarbeitungszeit des Clients: 90393 Gesamt Ausführungszeit: 92221 Wartezeit auf Server antwortet: 1828
Meine beste Schätzung dafür, was "Dauer" auf dem Profiler bedeutet, ist die Zeit, die SQL Server benötigt (Optimierungsmodul zum Analysieren der Abfrage, Generieren des Abfrageplans oder Verwenden des vorhandenen Abfrageplans + Abrufen von Datensätzen von verschiedenen Seiten) die Ergebnismenge, die die Zeit ausschließt, die Daten benötigen, um über die Leitung zum Client zu gelangen "
Edit: Ich finde, dass beide Zeiten ungefähr gleich sind (Management Studio vs Profiler). Wie hängen sie mit den Zeiten zusammen, die ich in Kundenstatistiken sehe?
Kann jemand mehr Licht auf diese werfen?
Wenn ich Ihre Frage richtig verstanden habe, stellen Sie zuerst den Unterschied zwischen der vom Profiler gemeldeten Dauer und den in SSMS präsentierten Statistiken in Frage (entweder in der unteren rechten Ecke für die allgemeine Zeit und / oder durch SET STATISTICS TIME ON) . Darüber hinaus scheinen Sie von dem Kommentar des Produktions-DBA, dass die Ansicht in der erwarteten Dauer von ~ 60 Sekunden ausgeführt wird, nicht überzeugt zu sein.
Zuerst aus der Onlinedokumentation die Statistik, die SSMS über SET STATISTICS TIME ON zurückmelden würde:
"Zeigt die Anzahl der Millisekunden an erforderlich zum Parsen, Kompilieren und führe jede Anweisung aus. "
Sie sind genau dafür. Wie für die Dauer in Profiler wird es wie folgt beschrieben:
"Die Dauer (in Mikrosekunden) des Ereignis. "
Von der Stelle an, an der ich sitze, sollten diese beiden funktional gleichwertig sein (und wie Sie sicher bemerkt haben, meldet Profiler in Mikrosekunden, ob Sie gegen SQL 2005 oder höher arbeiten). Ich sage das, weil das "Ereignis" in diesem Fall (in Bezug auf die Dauer im Profiler) die Ausführung der Auswahl ist, die die Lieferung an den Client einschließt; Dies ist in beiden Fällen konsistent.
Es scheint, dass Sie vermuten, dass Geografie die Ursache für die lange Dauer ist, wenn Sie die Abfrage remote ausführen. Das kann sehr gut sein. Sie können dies testen, indem Sie die Auswahl in der Ansicht in einem Abfragefenster ausführen und dann ein weiteres Abfragefenster erstellen und den Wartetyp für die Abfrage überprüfen:
%Vor%Ich würde vermuten, dass Sie etwas wie ASYNC_NETWORK_IO als Wartestatus sehen würden, wenn Geografie das Problem ist - sehen Sie sich ansonsten an, was daraus wird. Wenn Sie die Abfrage Ihrer Remoteausführung profilieren, spiegelt die Dauer die Zeitstatistiken wider, die Sie in SSMS sehen. Wenn Sie jedoch Profiler verwenden und feststellen, dass die Dauer dieser Abfrage bei Ausführung von einem der Webserver , der sich im selben Rechenzentrum wie der SQL Server befindet, immer noch 7 Minuten dauert, dann wird die DBA ist ein großer, fetter Lügner :). Ich würde Profiler verwenden, um Abfragen aufzuzeichnen, die länger als 1 Minute dauern. Versuchen Sie, nach Ihrer Ansicht zu filtern, und nehmen Sie den Durchschnitt, um zu sehen, ob Sie die Leistung im Ziel haben.
Da keine anderen Antworten gepostet werden, mache ich mir Sorgen, dass ich hier weit weg bin - aber es ist spät und ich bin neu, also dachte ich, ich würde es versuchen!
Ich habe damit gekämpft, bis ich das gefunden habe ...
Wenn Sie die Registerkarte "Eigenschaften" für Ihre Abfrage öffnen, finden Sie möglicherweise eine magische "verstrichene Zeit", die Ihnen eine gewisse Ausführungszeit geben kann ... Hoffe es hilft ...
Tags und Links profiling performance sql-server-2008 ssms