By Frank Kalis
Man stelle sich einmal das folgende Szenario vor: Jemand ist neu in einer SQL Server Umgebung und wird mit der Aufgabe betraut, diese einer allgemeinen Performance-Überprüfung zu unterziehen. Oder als DBA soll man seinem Management Fakten auf den Tisch legen, was beim Umzug auf eine neue Hardware, oder nach dem Upgrade auf eine neue Version einer Software an Leistungssteigerung zu erwarten ist.
Wo würde man anfangen? Was wären die ersten Schritte? Und wie lange würde man unter Einsatz welcher Ressourcen dafür brauchen?
Was, wenn es ein Tool gäbe, das aussagekräftige Antworten auf diese Fragen innerhalb kurzer Zeit geben könnte? Würde man das für eine bodenlose Übertreibung halten? Oder eher für einen Marketing-Gag, der nicht mehr als heisse Luft ist?
Um am besten zu beschreiben, was genau der Qure Analyzer (QA) ist, erscheint es angebracht eine Passage aus dem Benutzerhandbuch zu zitieren:
Qure Analyzer helps you analyze database workloads comprised of one or more SQL traces. Using the intuitive graphical interface and multi-dimensional grouping, sorting and filtering, you can easily analyze all aspects of your database workloads. For example, you can easily isolate the most Ressource-consuming SQL statements, applications, users, hosts, and much more.
Was aber soll dies nun genau bedeuten?
Nun, vereinfacht gesagt, bedeutet es, dass man das Tool mit Standard SQL Server Trace Dateien füttert. Diese werden vom QA verarbeitet und analysiert und in einem dedizierten Repository gespeichert, welches es dem QA ermöglicht, später die Ergebnis anzuzeigen, ohne erneut auf die Trace Dateien zugreifen zu müssen. Diese Ergebnisse werden in einer GUI angezeigt, die dem Benutzer eine multi-dimensionale Analyse, inklusive sortieren, gruppieren und filtern erlaubt. Auf diese Weise wird es sehr einfach zum Beispiel die kostspieligsten Abfragen oder die ressourcenintensivsten Applikationen zu ermitteln.
DBSophic's Qure Analyzer kann kostenlos von der Produkt Homepage heruntergeladen werden. Die einzige Voraussetzung dafür ist eine kurze Registrierung, bevor man zum tatsächlichen Download kommt. Die Software unterliegt keinerlei weiteren Restriktionen, wie zum Beispiel einer begrenzten Laufzeit oder einer Begrenzung in der Anzahl der Computer, auf der sie installiert werden kann.
Der Rechner sollte jedoch mindestens die folgenden Hardware Anforderungen erfüllen:
Minimale Hardwareanforderungen: |
2 GB RAM empfohlen. |
50 MB freier Festplattenspeicher für das Programm und Log-Dateien. |
2 GHz CPU. Dual core empfohlen. |
QA Softwareanforderungen: |
Windows XP/Vista/7, Windows Server 2003/2008/2008R2 - 32 oder 64-bit. |
Microsoft .Net Framework 4.0. |
Microsoft SQL Server 2005/2008 client tools, 32 oder 64-bit (erforderlich für die Analyse der Trace-Dateien). |
Unterstützte Trace Formate: |
SQL Server 2005/2008/2008R2 |
Trace-Dateien oder Trace Tabelle |
Die Installation des Qure Analyzers ist innerhalb weniger Minuten mit einigen Mausklicks durchgeführt. Da sie keinerlei Schwierigkeit darstellt, soll an dieser Stelle nicht weiter auf sie eingegangen werden.
Startet man den Qure Analyzer, präsentiert sich dem Benutzer die oben dargestellte einfache und übersichtliche Oberfläche. Man braucht nicht lange, um sich damit zurechtzufinden, da man nicht raten muss, wo sich welche Funktionen verbergen. Man kann entweder eine neue Analyse erstellen oder eine bereits vorhandene öffnen. Für diese Rezension werde ich keine eigene Analyse erstellen, sondern mich vielmehr auf die Demo-Analyse konzentrieren. Der Grund dafür ist, dass ich meine Analyse "weniger subjektiv" halten möchte, dadurch das die gezeigten Zahlen der Demo-Analyse mehr oder weniger leicht in jeder SQL Server Umgebung reproduziert werden können und nicht nur in meiner speziellen Umgebung. Nichtsdestotrotz möchte ich nur kurz zeigen, wie einfach es ist, eine eigene Analyse anzulegen:
Indem man auf den "New Workload Analysis..." Link klickt, öffnet man den oben dargestellten Dialog. Wie man daraus erkennen kann, hat man die Wahl, die Rohdaten für die Analyse entweder in einer Datei oder einer SQL Server Datenbank zu speichern. Jede Alternative hat ihre eigenen Vor- und Nachteile. Das Speichern in einer Datei ermöglicht grössere Portabilität, welche vielleicht nützlich ist, wenn man vor Ort beim Kunden Daten zur späteren Analyse in der eigenen Firma sammeln möchte. Der Nachteil dieser Methode ist, dass die maximale Dateigrösse auf 4 GB begrenzt ist. Das Speichern in einer SQL Server Datenbank hingegen unterliegt nicht dieser Beschränkung und verspricht zudem noch bessere Performance. Allerdings muss man hierbei Einschränkung bei der Portabilität hinnehmen. Erwähnt werden sollte zudem noch, dass der Vergleich von Workloads nur möglich ist, wenn diese in einer Datenbank gespeichert werden. Zu diesem Feature kommen wir aber später noch einmal zurück.
Öffnet man die Demo-Analyse landet man auf der "summary" Seite eines neuen Tabs. Diese Zusammenfassung gibt einem einen High-Level Überblick über die gesamten Analyse, wie zum Beispiel die Anzahl der analysierten Events des Trace oder eine Ressourcen-Statistik. Von hier aus kann man sich zu den weiteren Ebenen der Analyse durchklicken, indem man entweder den Links in der "More information" Spalte folgt, oder auf den "Details" Tab klickt.
Beide beschriebenen Wege bringen den Benutzer zum "Details" Tab, welcher das Interface zu den multi-dimensionalen Analysemöglichkeiten des Qure Analyzers darstellt. Hier ist man sozusagen im Herzen des Analyzers, weshalb sich ein genaueres Hinschauen lohnt.
Auf der linken Seite erkennt man, dass man die volle Kontrolle über den Gruppierungsgrades des Grids auf der rechten Seite hat. Man kann Mehrfach-Gruppierungen über mehrere Spalten vornehmen, diese ganz nach seinen Anforderungen anordnen und filtern. Durch Klicken auf "Apply" werden diese auf das Grid angewendet.
In der gleichen Weise, in der man Gruppierungsebenen erstellt, kann man auch Filter definieren, um den Workload zu filtern und seine Analyse auf bestimmte Aspekte zu fokussieren. Qure Analyzer stellt 3 verschiedene Filtertypen zu Verfügung: Textsuche, Einzelwerte oder Bereiche:
Das Textsuche Feature ermöglicht dem Benutzer das Eingrenzen auf eine bestimmte Zeichenfolge, welche im T-SQL Batch vorkommen muss.
Ein Beispiel für den Einzelwertefilter ist oben dargestellt: Die Auswahl der verschiedenen Applikationen, die innerhalb eines Workloads vorkommen.
Die Filterung auf Lese-Operationen ist ein gutes Beispiel für einen Bereichsfilter. Hierbei gibt man die Ober- und Untergrenze für die Lese-Operationen, die einen interessieren. Laufzeit oder CPU stellen weitere potentielle Anwendungsmöglichkeiten dar.
Die rechte Seite der Oberfläche wird vom Grid eingenommen, das die Ergebnisse der gefilterten und/oder aggregierten Daten der Analyse anzeigt. Zu den Standardfunktionen dieses Grids zählt, dass jede Gruppierungsebene aus- und zusammengeklappt werden kann. Ferner kann das Grid durch einen Klick auf einen Spaltenkopf nach dieser Spalte sortiert werden und die Spalten können beliebig verschoben und angeordnet werden.
Der untere Bereich der rechten Seite zeigt entweder eine detaillierte Erläuterung des Ressourcenverbrauchs.
oder den gerade aktivierten SQL Batch im Grid
Eines der interessantesten Features im Qure Analyzer ist die Fähigkeit Workloads zu vergleichen. Es gibt zahlreiche mögliche Verwendungszwecke für dieses Feature. Man könnte zum Beispiel identische Traces auf 2 verschiedenen Servern laufen lassen und sie gegeneinander benchmarken. Oder man könnte 2 verschiedene Versionen von SQL Server auf identischer Hardware laufen lassen, um ein Gefühl dafür zu bekommen, ob und wie viel Performancegewinn man durch den Move auf eine Version erwarten kann. Den möglichen Verwendungszwecken sind kaum Grenzen gesetzt, aber das soll dem Leser überlassen bleiben, der dies in seiner eigenen Umgebung ausprobieren kann.
Abschliessend möchte ich nur noch auf einige dem Qure Analyzer zugrundeliegenden Konzepte eingehen. Das Tool unterscheidet "controlled" und "uncontrolled" Workloads. Hier ist die Definition dieser Begriffe aus dem Benutzerhandbuch:
Controlled Workloads contain an identical set of SQL commands and are replayed under two different conditions. Usually the testers modify only one dimension of the environment between replays. They may be evaluating a code change, a server upgrade or a different piece of hardware for example. Using Controlled Workloads offer one means to achieve an apples-to-apples comparison.
Uncontrolled Workloads contain a similar but non-identical set of SQL commands. When you capture two different sets of traces in production for example, these workloads are usually uncontrolled, because in a production environment, transactions occur as business needs dictate, and so they are not predictable.
Bei jedem Vergleich zwischen Workloads definiert man einen Workload als "Baseline" mit dem dann der andere Workload verglichen und gebenchmarked wird. Man kann sich das als Vorher- / Nachher Schnappschuss vorstellen, wo in der Zwischenzeit etwas Signifikantes passiert ist. Dies könnte zum Beispiel die bereits erwähnte neue Hardware sein oder die neue Software-Version oder zwischenzeitlich vorgenommene Performance Tuning Massnahmen, deren Wirksamkeit man überprüfen möchte.
Das Ergebnis des Vergleichs wird in einem eigenen Tab dargestellt und kann anschliessend in der bereits bekannten Art und Weise analysiert werden. Der grosse Unterschied ist jedoch die Farbe der Balken im Grid. Grün steht für eine Verringerung des Ressourcenverbrauchs, während Rot für einen Anstieg steht.
Eine vollständige Beschreibung des Workload Vergleichsfeatures ist an dieser Stelle nicht möglich. Vielmehr möchte ich auf die ausgezeichneten Erklärungen hierzu im Benutzerhandbuch und diese Miniserie von Artikel verweisen:
Der Qure Analyzer ist ein erstklassiges Werkzeug für jeden, der sich mit SQL Server Performance Tuning beschäftigt. Er ist einfach zu verwenden und gibt einem sowohl schnelle als auch tiefe Einblicke in eine SQL Server Umgebung. Er ist zweifelsohne nicht gedacht, um dringende und brandeilige Massnahmen bei Produktionsstörungen vorzuschlagen. Aber sobald sich der Rauch wieder gelegt hat und man Zeit zum Durchatmen hat, ist der Analyzer ein geeignetes Werkzeug, um den Ressourcenverbrauch der SQL Server Umgebung zu analysieren und Vorschläge zur Stabilisierung zu unterbreiten.
Die Tatsache, dass dieses Tool kostenlos ist, macht es umso interessanter und zu einem "Must-have" Kandidaten für das Arsenal jedes SQL Server Profis.