wie kann ich die Leistung in SQL Server Mgmt Studio testen, ohne dass Daten ausgegeben werden?

StackOverflow https://stackoverflow.com/questions/1240051

  •  11-09-2019
  •  | 
  •  

Frage

Verwenden von SQL Server Management Studio.

Wie kann ich testen Sie die Leistungsfähigkeit einer großen Auswahl (sagen 600k Zeilen) ohne das Ergebnisfenster meinem Test zu beeinträchtigen? Ceteris paribus es nicht wirklich wichtig, da die beiden Abfragen werden beide an den gleichen Ort ausgibt werden. Aber ich mag meine Testzyklen beschleunigen und ich denke, dass die Ausgabeeinstellungen von SQL Server Management Studio in meinem Weg. Ausgabe auf Text ist, was ich bin derzeit mit, aber ich bin der Hoffnung auf eine bessere Alternative.

Ich denke, das ist meine Zahlen auswirken, da die Datenbank auf meiner lokalen Box ist.

Edit: Hatte eine Frage zu tun WHERE 1 = 0 hier (denken, dass das passieren würde beitreten, aber keine Ausgabe), aber ich es getestet und es hat nicht funktioniert - kein gültiger Indikator für die Abfrageleistung.

War es hilfreich?

Lösung

Sie könnten tun SET ROWCOUNT 1 vor Ihrer Anfrage. Ich bin mir nicht sicher, es ist genau das, was Sie wollen, aber es wird vermieden, für viele Daten warten zu müssen, werden zurückgeführt und deshalb geben Sie eine genaue Berechnung Kosten.

Wenn Sie jedoch Client-Statistiken zu Ihrer Anfrage hinzufügen , eine der Zahlen ist die Zeit auf dem Server Antworten warten, die Ihnen die Server Rechenzeit einschließlich nicht die Zeit gibt sie die Daten über das Netzwerk zu übertragen nehmen.

Andere Tipps

Sie können SET STATISTICS TIME ON erhalten eine Messung die Uhrzeit auf dem Server. Und Sie können die Query / Fügen Client-Statistik (Shift + Alt + S) auf SSMS Detailinformationen über den Client Zeitverbrauch zu erhalten. Beachten Sie, dass SQL-Abfragen nicht ausführen und dann wieder das Ergebnis an den Client, wenn Sie fertig, sondern laufen sie wie sie Ergebnisse liefern und sogar die Ausführung auszusetzen, wenn der Kommunikationskanal voll ist.

Der einzige Kontext, in dem eine Abfrage ignoriert vollständig die Ergebnis Pakete zurück an den Client gesendet wird er aktiviert wurde. Aber dann kehrt die Zeit der Ausgabe an den Client sollte auch berücksichtigt werden, wenn Sie Ihre Leistung messen. Sind Sie sicher, dass Ihre eigene Client werden schneller als SSMS?

SET ROWCOUNT 1 Verarbeitung stoppt, nachdem die erste Zeile zurückgeführt wird, was bedeutet, es sei denn, der Plan die Ergebnisse eines Blockierungs Bediener haben geschieht nutzlos sein wird.

Ein triviales Beispiel

SELECT * FROM TableX

Die Kosten für diese Abfrage in der Praxis auf der Anzahl der Zeilen in TableX stark abhängig ist.

SET ROWCOUNT 1 Verwendung wird nichts davon zeigen. Unabhängig davon, ob TableX hat 1 Zeile oder 1 Milliarde Zeilen, die es ausführen zu stoppen, nachdem die erste Zeile zurückgegeben wird.

ich zuweisen oft die SELECT Ergebnisse zu Variablen, die Dinge aussehen zu können logische liest, ohne verlangsamt durch SSMS die Ergebnisse angezeigt werden.

  SET STATISTICS IO ON
  DECLARE @name nvarchar(35),
          @type nchar(3)

  SELECT @name = name, 
         @type = type
  FROM master..spt_values

Es ist ein verwandter Connect Artikel Anfrag Geben Sie "verwerfen Ergebnisse auf dem Server" Option in SSMS und / oder TSQL

Wie können Sie die Leistung Ihrer Abfrage testen, ob Sie die Ergebnisse nicht ausgeben? Beschleunigung der Prüfung bis ist sinnlos, wenn die Prüfung Sie nichts über nicht sagen, wie die Abfrage durchführen wird. Wollen Sie wirklich dieser Hund einer Abfrage 10 Minuten dauert, um herauszufinden, Daten zurückzukehren, nachdem Sie es schieben prod?

Und natürlich sein Gehen, einige Zeit in Anspruch nimmt 600.000 Datensätze zurück. Es wird in der Benutzeroberfläche als auch, es wird wahrscheinlich länger dauern als im Abfragefenster, da die Informationen über das Netzwerk gehen.

Das Beste, was Sie tun können, ist den Abfrageausführungsplan (drücken Sie Strg + L ) für die eigentliche Abfrage zu überprüfen. Das gibt Ihnen die besten guesstimate für die Leistung zur Verfügung.

Ich würde denken, dass die where-Klausel WHERE 1=0 definitiv auf der SQL-Server-Seite geschieht, und nicht Management Studio. Keine Ergebnisse würden zurückgegeben werden.

Ist man DB-Engine auf der gleichen Maschine, die Ihnen Mgmt Studio laufen auf?

Sie könnten:

  • Ausgabe in Text oder
  • Ausgabe in Datei.
  • Schließen Sie die Abfrageergebnisse Bereich.

Das würde nur die Zyklen bewegt bei der Erstellung der Gitter in Mgmt Studio verbracht. Vielleicht ist die Resuls zu Text wären performant im Großen und Ganzen. die Scheibe verstecken würde die Zyklen auf Mgmt Studio sparen Sie mit den Daten zu ziehen. Es ist immer noch an das Mgmt Studio zurückgeführt wird, so dass es wirklich nicht viele Zyklen zu speichern.

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