Testen der Skalierbarkeit von gespeicherten Prozeduren


14

Ich habe eine E-Mail-Anwendung, die aufgerufen wird, um die Anzahl der neuen Nachrichten für einen bestimmten Benutzer bei jedem Seitenaufruf an die Benutzeroberfläche zu übermitteln. Ich habe einige Variationen von Dingen, die ich auf der DB-Ebene teste, aber alle werden durch den gespeicherten Proc-Aufruf abstrahiert.

Ich versuche, die DB zu zuschlagen, um zu sehen, wie hoch der Bruchpunkt (Anzahl der Anforderungen pro Sekunde) sein würde.

Kurz gesagt, ich habe eine Tabelle wie diese userId, newMsgCount mit einem Clustered-Index für userId. SQL sollte in der Lage sein, Hunderte oder Tausende dieser Antworten pro Sekunde zu verarbeiten. Ich denke, der Nachzügler ist meine .NET-App.

Wie kann ich dies zu einem guten Test machen, um die Testergebnisse basierend auf der SQL-Leistung zu erzielen?

Gibt es ein Werkzeug dafür, dass ich ihm einen gespeicherten Prozessnamen und einen Parameter geben kann, damit er meine DB bündelt?

Ich möchte sehen, ob die DB eine Minute zurückgeben kann. von 250 Antworten pro Sekunde.


1
Gute Frage. Ich würde es etwas allgemeiner erweitern und fragen: Wie lädst du deine Datenbank auf?
Nick Chammas

Antworten:


11

SQLQueryStress ist ein großartiges Tool für das Testen von Nebenläufigkeiten im kleinen Maßstab, aber es ist nicht wirklich der Aufgabe des Auslastungstests gewachsen. Von Microsoft ist ein überraschend wenig bekanntes Toolset kostenlos erhältlich, das die meisten SQL Server-Stresstestszenarien, die RML Utilities , bewältigen kann .

Ein sehr kurzer Überblick über die Werkzeuge:

  • ReadTrace konvertiert Profiler-Traces von .trc-Dateien in .rml (Replay Markup Language).
  • OStress wird zum Wiedergeben von .rml- und .sql-Dateien auf einem Server verwendet.
  • ORCA (OStress Replay Control Agent) koordiniert die Wiedergabe auf verteilten Instanzen von OStress.
  • Reporter stellt Leistungsanalyseberichte bereit.

Das SQLCat-Team hat einen hervorragenden Schnellstart-Artikel veröffentlicht, der eine Beispieldatenbank und Workloads enthält. Precision Performance für Microsoft SQL Server mit RML Utilities 9.0

Sie haben die Möglichkeit, entweder Profiling-Aktivitäten für die Wiedergabe zu erstellen oder eine Reihe von .sql-Skripten von Hand zu starten, die Sie dann über OStress und ORCA wiedergeben.

Hervorragende Tools für Lasttests und zur Untersuchung von Leistungsproblemen.


6

Ein Tool, das Sie verwenden können, ist SQLQueryStress . Geben Sie für einen schnellen Start Folgendes an: die gespeicherte Prozedur, die Iterationen und die Anzahl der Threads. Dann starten Sie den Stresstest. Metriken wie CPU-Sekunden, logische Lesevorgänge usw. werden angezeigt.


4

Klingt wie Sie ein .NET-Entwickler sind. Eine Möglichkeit besteht darin, eine kleine Anwendung zu schreiben, die Multithreading verwendet und nur eine bestimmte Anzahl von gleichzeitigen Treffern für die Datenbank und die gespeicherte Prozedur aufweist. Führen Sie eine Ablaufverfolgung durch, während dies geschieht.

Schreiben Sie den Anwendungscode, um die Anzahl der gleichzeitigen Threads in einem bestimmten Intervall zu erhöhen, wenn Sie die Belastung von SQL Server automatisch erhöhen möchten.

So würde ich es machen.


Warum schreibst du diese App nicht, indem du mein Open Source-Projekt Benchmark.NET verwendest und einen parallelen Benchmark verwendest?
Andrei Rînea
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.