SQL Server Analysis Services im mehrdimensionalen Modus Grundkurs

Analysis-Services-Performance überwachen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Kommt es auch bei Ihnen vor, dass ein einzelner User mit hochkomplexen Abfragen den ganzen OLAP-Server lahmlegt? Wollten Sie schon immer wissen, wie Sie herausbekommen, wer das ist? Diese Demo zeigt es.
06:39

Transkript

Eine der schönsten und vornehmsten Aufgaben des "Administrators" ist es, die Performance der Cubes, dahingehend zu überwachen, ob nicht einzelne Nutzer durch besonders fiese, lang laufende "Statements" den Cube lahmlegen, sodass andere Verwender, die nicht so aufwändige "Statements" haben, einfach gar nicht mehr zum Zug kommen, weil der Cube total überlastet ist. Wie kann man das tun? Da gab es historisch eine ganze Reihe von Möglichkeiten, aber eine neue Möglichkeit von "Analysis Services 2016" macht es uns sehr leicht und einfach. Wir gehen einfach ins Management Studio und haben dann die Knotenverwaltung unterhalb von unserem Analysis Services Server. Dort gehen wir auf "Erweiterte Ereignisse" Englisch- "extended events", und können uns da eine neue Ereignissitzung zur Überwachung des Servers erzeugen lassen. Da gibt es einen super grafischen "Administrator", einen grafischen "Designer" dafür. Das ist noch nicht lange der Fall. in Vorversionen musste man das alles mit der Kommandozeile machen. Das ist jetzt viel, viel einfacher. Also, ich könnte mal gucken, was der Cube macht. Und dann lege ich mal los, indem ich mir Ereignisse aussuche, und hier sieht man schon mal, es gibt es eine wahnsinnige Menge von Ereignissen. Da kommt man überhaupt gar nicht mehr klar. Wenn man zum Beispiel alles, was mit "Queries" zu tun hat, suchen will, dann ist das ein bisschen einfacher: dann hat man hier solche Filterfunktion- man sagen, "also ich will mir angucken, wenn eine Cube-Query endet". Und überhaupt, da nehme ich mal CubeEnd und QueryEnd, und gucke mal, was die so leisten. Was die leisten können, kann man schon zum Teil hier sehen. Man kann nämlich gucken, QueryCubeEnd, was gibt es denn da. Ja, und jetzt kann man gucken: QueryCubeEnd gibt mir schon eine Reihe von globalen Feldern und vor allem eine Unmenge von Ereignissfeldern. Hier sieht man ganz genau mit Beschreibung, was da alles drin vorkommt, was der so macht bei QueryCubeEnd, oder bei QueryEnd, wir sehen, das sind völlig unterschiedliche Felder. Man kriegt also eine Riesenmenge von Informationen darüber. Also, wir könnten übrigens auch ein- und ausschalten, welche Felder wir da noch haben wollen, aber das soll uns erstmal reichen. Wir haben also diese beiden Ereignisse für uns ausgewählt und nichts weiter konfiguriert. Was macht man mit diesen Ereignissen? Nun könnte man die auch permanent in die Datei schreiben lassen? Auch in eine Datei, die sich wieder selber überschreibt oder so? Aber wenn man mal "live" zugucken will, dann gibt es eigentlich nur einen sinnvollen Zieltyp, nämlich den "event_stream". Die anderen kann man sich ja vorstellen, was die machen. Ein Live-Datenstrom-Ziel, das würde erstmal uns reichen. Und damit hätten wir jetzt unsere erste, ja, "Event Session" erzeugt. Der Tipp übrigens hier, unbedingt skripten und dann über ein Skript erzeugen lassen. Warum? Weil unsere ganze Session nicht gestoppt werden kann. Wenn wir die Überwachung beenden wollen, dann müssen wir die Session löschen. Das heißt, ich habe sie besser irgendwo geskriptet, das ist bei unserer Einfachen jetzt nicht nötig, aber in der realen Welt natürlich viel, viel besser. So, jetzt gibt es die Session "Guck dem Cube zu", und mit dieser Session kann man sich hier Livedaten ansehen. Für diesen Session-Typ, wenn ich es in eine Datei schreiben lasse, kriege ich natürlich keine Livedaten, da muss ich die Datei lesen. Und, warum ist das so langweilig? Na, weil nichts passiert. Jetzt müsste jemand auf dem Cube irgendwas machen. Am besten eine sehr aufwändige Abfrage. Wir nehmen mal so einen typischen Cube-Client, zum Beispiel Excel, und wir machen mal was, also wir stellen hier mal so einen Filter um, auf hier "Resellerdiskounts", so. Und wir machen einmal einen "drill-down" von 2012 auf die Quartale. Das sind ja jetzt ein paar Operationen gewesen. Gucken wir mal, ob unser Administrator uns dabei auch beobachten konnte. Und hier sieht man schon, oh ja, er konnte ganz offensichtlich. Also man braucht vielleicht nicht beide Events, denn QueryEnd und QueryCubeEnd bringen beide schon mal spannende Informationen, und was kriege ich bei QueryCubeEnd. Wenn man jetzt runterschaut. dann sieht man hier den Namen der Datenbank, die aktuelle Zeit, wie lange das gedauert hat, QueryCubeEnd, wer das war, welches Objekt angesprochen wurde, Ok, aber sonst nicht so besonders spannende Informationen. Und hier nochmal gucken, die "ConnectionID" könnte uns fehlen. Die finden wir nicht. Die "Prozess-ID" vom Server finden wir auch nicht. Besser ist da QueryEnd, weil bei QueryEnd, wenn wir jetzt mal unten schauen, da gibt es erstmal die wichtige "ConnectionID", damit könnten wir die gesamte "Connection" beenden, ja. Wenn der zuviel Quatsch macht, was wir hier ja sehen können, und wir sehen darüber hinaus auch noch, was er gemacht hat. Die "Session-ID", auch die könnten wir beenden, wenn wir wollten. Die "SPID", ja, also diese Server-weite "Prozess-ID", mit der wir so eine Akion beeinden können und hier unten haben wir sogar Textdata, das heißt wir können hinausschauen, welches MDX Statement von Excel generiert worden ist, um das hier, ja, ausfüllen zu lassen. Wenn wir erstmal weiter unten gucken, da gibt es eine Menge komplexerer Statements, "head-categoried members". Gucken wir uns unsere letzte Query an. Die war bestimmt ordentlich kompliziert. Genau, das ist eine typische Excel-Query: NON EMPTY Hierarchize. Also, und wenn ich jetzt sehe, das macht man natürlich nicht mit dem End-Statement, sondern mit dem Beginn-Statement, die wir jetzt weggelassen haben. Wenn jemand ein Statement hat und das läuft außergewöhnlich lange und der belastet unseren Cube über Gebühr. Dann könnten wir zum Beispiel auf die Idee kommen, diesen Kollegen die weitere Mitarbeit doch bitte zu beenden. Zum Beispiel mit einer "ConnectionID 11", das ist ja relativ einfach, dann geht man einfach hier ins XMLA, verbinden sie mit demselben Server, ungefähr wie man schon vorbereitet. Und da sieht man unter Angabe der "ConnectionID", können wir das Ganze canceln. Wir könnten auch nur den einzelnen Befehl canceln, aber wir machen jetzt mal so. Zack! Also, alles was von der "Connection 11" kommt, wird jetzt mit einmal auf der Stelle gecancelt. Abfrage ausführen! Zack! Und "no news, is good news". Also, das Ganze ist abgeschlossen. Was heißt das für unseren armen Excel-User? Gut, aktuell lief ja hier nichts. Wir haben jetzt nicht gerade aktuell etwas getan, aber sobald ich jetzt irgendwie weiter anfangen möchte, das zu erzeugen, uh, kriege ich hässliche Fehlermeldung. Also, meine ganze komplette "Connection" wurde beendet. Also, ich kann jetzt nicht mehr weiter Daten hier abziehen und die anderen Nutzer wahnsinnig machen mit meinen komplexen Abfragen. Also, hier haben wir gelernt, wie man mit Hilfe der Extended Events oder "Erweiterten Ereignisse" den Cube sehr schön überwachen kann, was er tut und dann entsprechend reagieren, wenn bestimmte Nutzer mit zu langen Abfragen die Performance in den Keller ziehen wollen.

SQL Server Analysis Services im mehrdimensionalen Modus Grundkurs

Lernen Sie eigene OLAP-Cubes und -Lösungen mit dem multidimensionalem Modus der SQL Server Analysis Services zu erstellen.

3 Std. 57 min (54 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.04.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!