Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Das Performance-Tuning-Labyrinth

Eines Tages wachen Sie auf und stellen fest, dass Sie ein Oracle-Datenbankadministrator sind. Die Götter haben endlich dein wahres Potenzial ans Licht gebracht und dir erlaubt, im besten Job der Welt zu arbeiten! Sie beginnen Ihre DBA-Karriere so mit strahlenden Augen und buschigem Schwanz. Sie erstellen neue Datenbanken, vergeben Berechtigungen und schreiben PL/SQL-Code. Das Leben ist großartig. Sie können es kaum erwarten, morgens aufzustehen, sich die erste Tasse Kaffee einzuschenken und Ihren Browser auf Ihre bevorzugten Oracle-Foren zu richten, um vor dem Mittagessen das Wissen Ihres Lebens zu sammeln! Wenn diese Götter Sie immer noch anlächeln, können Sie sogar ein paar Fragen beantworten und mit tollen Punkten belohnt werden. Das leben ist gut. Das Leben ist süß.

Während Sie sich noch im Glanz Ihrer neu entdeckten Karriere sonnen, kommt jemand mit einem Problem zu Ihnen. Ein Leistungsproblem. Du frierst. Sie haben einen kleinen Kloß im Hals, wenn Sie zu der Selbsterkenntnis kommen, dass Sie keine Ahnung haben, wie Sie Probleme mit der Datenbankleistung lösen können. Was Sie an diesem Tag nicht erkannt haben, ist, dass jeder DBA vor Ihnen zu Beginn seiner Karriere in genau dieser Situation war. Das hält die andere Person jedoch nicht davon ab, Sie anzusehen und sich zu fragen, warum Sie das Leistungsproblem nicht sofort lösen. Schließlich sind Sie der DBA und sollten wissen, wie man so etwas macht. Dieses magische Zeug nennen sie (Stichwort die singenden Engel) Performance Tuning . Denn es wurde geschrieben, dass Sie, wenn Sie ein DBA sein und überleben und diesen Job gut machen wollen, die Leistung optimieren müssen. Andere werden nie erfahren, was sich hinter dem Vorhang abspielt, während du Tränke herstellst und Zaubersprüche wirkst. Alles, was sie interessiert, ist, dass Sie ihr Leistungsproblem gelöst haben und sie mit ihrer täglichen Arbeit fortfahren können.

An diesem frühen Punkt ihrer Karriere beschließt jeder DBA, dass er mehr über diese Sache lernen muss, die er Performance Tuning nennt . Was ist es? Wie mache ich es? Wie kann ich die wichtigste Person in meiner IT-Abteilung werden, weil ich die geheime Zutat entdeckt habe, um diesen 5-Stunden-Bericht in ein 1-Minuten-Wunder zu verwandeln?

Oh, wir waren damals so jung … so naiv. Wir dachten, es sei einfach. Drücken Sie ein paar Knöpfe, starten Sie ein paar Tools und fertig. Die Performance-Tuning-Lösung ist gefunden und wir sind wunderbar! Das Leben schien so einfach, als wir uns auf die gelbe Backsteinstraße wagten. Aber auf dieser Straße gibt es keine Vogelscheuchen. Keine Löwen. Keine Blechmänner. Nicht einmal irgendwelche süßen kleinen Hunde namens Toto. Nein ... diese Straße ... diese Oracle Performance Tuning-Straße ist voller Dinge, die viel größer sind. Auf dieser Straße begegnen wir Versorgungsunternehmen und Werkzeugen. Wir treffen Explain Plan. Wir treffen tkprof und SQLT. Wir finden wunderbare Ansichten wie V$SGA_TARGET_ADVICE und V$SESSION_WAIT und seinen Zwilling V$SESSION_EVENT (wohlgemerkt keine eineiigen Zwillinge, aber ein Blick und Sie wissen, dass sie verwandt sind).

Da sind Sie also. Ihr glänzender DBA-Titel sitzt immer noch unter Ihrem Namen in jeder E-Mail-Signatur, die Sie senden. Und Sie haben jetzt all diese wunderbaren Werkzeuge zu Ihrer Verfügung. Sie haben sich für ASH und AWR entschieden, weil Ihr Unternehmen Ihnen zum Glück das Diagnostics Pack geschenkt hat. Ihr Bücherregal ist mit großartigen Wälzern wie diesem bewaffnet. (Schamloser Stecker, den ich kenne). Irgendein toller Typ in den Foren, wie ich, hat dich auf Lighty aufmerksam gemacht. Ihnen steht ein ganzer Werkzeugkasten zur Verfügung. Nein! Nicht Werkzeugkiste….warchest! Kleine Länder an anderen Orten der Welt verfügen nicht über das Arsenal, über das Sie verfügen. Warum … ich könnte diese supergeheime Schaltfläche im SQL Tuning Advisor drücken und eines dieser Länder umhauen, *und* SQL-ID 98byz76pkyql schneller laufen lassen, während aus meinem Kaffee noch Dampf aufsteigt … Ich bin so gut.

Erinnern Sie sich an den Tag, an dem Sie Ihre erste Performance-Ausgabe erhalten haben und Sie diesen Kloß im Hals hatten? So einen Tag gibt es auch in Ihrer DBA-Karriere. Es ist der Tag, an dem Sie das Labyrinth zur Leistungsoptimierung erreichen (Hinweis auf Donner und Blitz). Aber das ist kein Labyrinth. Das ist anders. Die meisten Labyrinthe haben einen Eingang und einen Ausgang, mit vielen Wendungen und Entscheidungen auf dem Weg. Dieses Labyrinth, warum, dieses Labyrinth ist offensichtlich anders. Dieses Labyrinth hat viele, viele Eingänge. Und dieses Labyrinth hat viele, viele Ausgänge. Jeder Eingang ist ein anderes Tool zur Leistungsoptimierung. Und jeder Ausgang ist eine Lösung , aber nicht alle Lösungen lösen das Leistungsproblem wirklich. Und das ist das Rätsel, mit dem sich die Spezialisten für Leistungsoptimierung von Oracle konfrontiert sehen. Ich habe ein Leistungsproblem. Ich weiß, dass auf der anderen Seite dieses Labyrinths meine Lösung liegt. Aber welchen Eingang wähle ich? Über einem Eingang steht Explain Plan. Auf einem anderen Eingang steht V$DB_CACHE_ADVICE. Warum gibt es all diese Eingänge, einen für jedes Werkzeug, das mir zur Verfügung steht. Dies ist eine Geschichte aus meiner Jugend und hoffentlich kann diese Geschichte, wie Bilbo an Frodo schrieb, auch dir bei deinen Abenteuern helfen.

Also suche ich mir einen Eingang aus.

Ich betrete das Labyrinth.

Habe ich eine gute Wahl getroffen?

Mal sehen, wo das hinführt. Weiter vorne macht die Straße eine Linkskurve. Aber es ist meine einzige Wahl, also mache ich mit. Als nächstes komme ich an eine Kreuzung. Ich kann nach rechts oder links gehen. Ich biege rechts ab. Ups … Sackgasse. Also gehe ich zurück und nehme stattdessen die linke. Eine weitere Sackgasse. Drath. Ich habe das Labyrinth falsch betreten. Manchmal führen Sie die Tools zu keiner Lösung. Also gehe ich zurück zu den Eingängen und treffe eine andere Wahl, wähle ein anderes Werkzeug.

Ich habe das Labyrinth jetzt ein zweites Mal betreten. Aber es sieht viel besser aus. Ich mache weiter. Nur noch ein paar Runden. Ich kann Licht sehen, also weiß ich, dass ich dem Ende nahe bin. Ja… da ist er, der Ausgang. Endlich komme ich auf der anderen Seite des Labyrinths heraus. Ich habe meine Performance-Tuning-Lösung zur Hand, aber nachdem ich die Lösung implementiert habe, merke ich schnell, dass dies mein Performance-Problem überhaupt nicht gelöst hat. Manchmal können Tools Sie zu Lösungen führen, die nichts mit Ihrem spezifischen Problem zu tun haben. Es ist also Zeit für meinen dritten Eintritt in das Labyrinth.

Als scharfsinniger Performance-Tuning-Spezialist wurde mir klar, dass alle bisher von mir gewählten Einstiege mit der Gesamtleistung der Datenbank zusammenhängen, aber was ich wirklich suche, ist die Leistung in Bezug auf eine bestimmte SQL-Anweisung. Aber ich weiß nicht, welche SQL-Anweisung optimiert werden muss. Wie kann ich herausfinden, welche? Nun, drei Türen weiter ist ein Eingang zu dem Labyrinth, das mit SQL Trace gekennzeichnet ist. Direkt daneben befindet sich eine Tür mit der Aufschrift EM Search Sessions. Ich werfe eine Münze und wähle SQL Trace. Kurz nachdem ich das Labyrinth betrete, komme ich an eine T-Kreuzung. Wenn ich nach links gehe, komme ich zurück zur Tür der EM-Suchsitzungen. Wenn ich nach rechts gehe, ist es ein direkter Schuss zum Ausgang. Natürlich gehe ich nach rechts. Aber in diesem Moment weiß ich, dass manchmal zwei verschiedene Tools Sie zu derselben Antwort führen werden. Als ich das Labyrinth verlasse, erhalte ich eine Freikarte für tkprof, denn führen schließlich nicht alle SQL-Trace-Straßen direkt zu tkprof? Ich habe jetzt die beleidigende SQL-Anweisung. Aber mein Problem ist noch nicht gelöst. Was tun?

Ich gehe zurück zum Eingang des Labyrinths. Manchmal Wir erhalten eine Antwort von unseren Tuning-Tools und müssen das Labyrinth erneut durchlaufen, um die endgültige Antwort aufzuschlüsseln. Diesmal betrete ich die SQLT-Tür. Ein paar Drehungen und Wendungen, aber dieser Labyrinthpfad ist ziemlich einfach, oder so scheint es. Ich komme zum Ende, und ich habe nicht nur eine Antwort, ich habe viele Antworten. Oh ... herrlicher Tag! Ich habe die Mutter aller Werkzeuge gefunden.

Ich habe andere DBAs von diesen Wunderwerkzeugen wie SQLT und AWR Reports sprechen hören. Wie wunderbar sie sind. Diese Tools sind so großartig, dass einige DBAs nur die SQLT- und AWR-Berichtseingänge sehen. Ich dachte immer, das wäre Stoff für Legenden, aber hier habe auch ich endlich das eine Werkzeug gefunden, um sie alle zu beherrschen … ok … eins für jede Hand. All diese Antworten stehen mir zur Verfügung. Welche Antwort hängt nun direkt mit meinem Leistungsproblem zusammen? Hier habe ich meinen SQLT-Bericht und alle darin enthaltenen Antworten. Welche Antwort ist meine. Welcher?!?!? Manchmal liefern Ihnen Tools zu viele Informationen. Für mich, der diese Performance-Tuning-Sache neu ist, könnte die Ausgabe von SQLT genauso gut in Klingonisch geschrieben sein. Aber zu meinem Glück kenne ich einen anderen DBA, der zwei Würfel von mir entfernt sitzt und Klingonisch spricht. Ich gebe ihm meine SQLT-Ausgabe. Er blättert es durch und innerhalb von 30 Sekunden zeigt er auf einen winzigen Abschnitt des Berichts und sagt diese magischen Worte. „Siehst du … genau da … das ist dein Problem.“ Mit einem fragenden Blick auf meinem Gesicht schwenkt er seine Hand über den Bericht und wie durch Zauberhand hat Google Translate ein paar Wörter auf der Seite geändert und ich kann jetzt deutlich sehen, dass ich eine Tabelle mit sehr schlechten Statistiken habe. Manchmal sind Tools mit all diesen Antworten eine große Zeitersparnis für diejenigen, die wissen, wie man sie verwendet. Dieser klingonisch sprechende DBA schiebt seine Brille hoch und enthüllt einen weiteren Abschnitt des SQLT-Berichts. „Sehen Sie hier, er sagt … diese schlechten Statistiken erzwingen ein FTS“, als ob ich wissen sollte, was ein FTS an diesem Punkt meiner Karriere ist. Aber ich möchte nicht wie ein Vollidiot wirken, also lächle ich und nicke zustimmend.

Ok ... ich komme der Lösung meines Problems näher. Ich weiß, dass ich schlechte Statistiken habe. Ich gehe zurück zu meinem Schreibtisch und freue mich darauf, mich an die Arbeit zu machen, um endlich mein Problem zu lösen. Als ich am Wasserkühler vorbeigehe und um die allgegenwärtige Menge meiner Kollegen herumgehe, die den ganzen Tag nichts Besseres zu tun haben, als zu plaudern, scheint die Sonne von einer Tür des Labyrinths und fällt in den Augenwinkel … nur eine Tür. Über dieser Tür befindet sich ein Schild mit der Aufschrift DBA_TABLES. Nun, wie jeder gute DBA sage ich mir, dass es keine schlechte Idee ist, diese Dinge doppelt zu überprüfen. Beginnend davon angezogen, betrete ich die DBA_TABLES-Tür und befinde mich erneut im Labyrinth. Ich drehe mich schnell um und etwas springt mich an, als wolle es mich erschrecken. Aber ich werde gut darin. Es ist mir egal, dass ein kleiner Labyrinthbewohner darauf besteht, mir zu sagen, dass sich diese Tabelle im Tabellenbereich USERS befindet. Ich weiß schnell, dass dies für mein Problem keinen Unterschied macht. Ich mache weiter und ignoriere all diese kleinen Kobolde mit ihren falschen Informationen. Ich drücke weiter. Und da habe ich es … die Bestätigung am Ausgang des Labyrinths, dass es keine Statistiken auf diesem Tisch gibt. Eine schnelle Lektion wurde hier gelernt, manchmal geben Ihnen die Tools Informationen, die für Sie an diesem Tag nicht relevant sind .

Ich bin vielleicht neu in diesem DBA-Spiel, aber das weiß ich. Ich muss sehen, wie die Dinge jetzt funktionieren, eine Änderung vornehmen und die Leistungsverbesserung messen, falls vorhanden. Also gehe ich zurück ins Labyrinth. Dieses Mal betrete ich die Tür mit der Aufschrift SQL Developer Autotrace und führe die anstößige SQL-Anweisung aus. Ich erhalte nicht nur die Laufzeit der SQL-Anweisung, sondern kann auch die Anzahl der Lesevorgänge und den Ausführungsplan sehen. Ich aktualisiere schnell die Statistiken auf der Tabelle, auf die mich mein klingonisch sprechender Freund hingewiesen hat. (kurz beiseite… Früher dachte ich, er sei ein Idiot, aber jetzt ist er nicht mehr so ​​schlimm. Ich kann von diesem Typen lernen. Vielleicht kann ich eines Tages auch Klingonisch sprechen). Dann betrete ich erneut die SQL Developer Autotrace-Tür. Die Ausführung meiner Abfrage ging nicht nur von 2 Minuten auf 2 Sekunden zurück, sondern die Lesevorgänge gingen auch erheblich zurück und der Explain-Plan verbesserte sich. Ok, der letzte Teil ist ein bisschen langwierig. Ich bin immer noch zu grün, um zu wissen, dass der Explain-Plan besser war, aber wenn ich später in meiner Karriere darauf zurückblicke, weiß ich, dass er es war. Ich lerne schnell, dass manchmal die mir zur Verfügung stehenden Tools zur Leistungsoptimierung nicht nur dazu da sind, die Ursache des Problems zu finden, sondern auch dazu dienen, zu bestätigen, dass die Lösung das Problem tatsächlich behoben hat. Und manchmal sind die Tools zur Bestätigung der Ergebnisse nicht die Tools, mit denen ich die Grundursache gefunden habe.

Ich habe meinen Endbenutzer schnell informiert, dass das Problem behoben ist. Der User grummelt etwas, das ich nicht ganz verstehen kann, und prüft, ob sein Leben tatsächlich besser ist. Und da erhalte ich es. Das größte Geschenk, das ein DBA jemals erhalten kann. Das ist richtig ... Ich habe die Bewunderung der Benutzer erhalten . Heute bin ich ein Wundertäter oder so denkt der Benutzer. Als ich in der Kabine dieses Benutzers stehe, schreit er „HE FIXED IT“ und wie aufs Stichwort tauchen die Köpfe der gesamten Abteilung über den Kabinenwänden auf wie Gophers aus dem Boden. Hurra..sie jubeln! Ich liebe das Leben, das sich im Schein sonnt. Warum die Chefin überhaupt anbietet, uns nach der Arbeit in die Kneipe auszuführen..die erste Runde geht auf ihre Kosten.

Ich gehe zurück zu meinem Schreibtisch, gespannt auf die nächste Herausforderung. Dieser Job könnte nicht süßer sein.

Ich erinnere mich an meine ersten Begegnungen mit diesem Performance-Tuning-Labyrinth, als wäre es gestern gewesen. Als wir an diesem Abend im Pub bei Pints ​​scherzten, wagte ich nicht, über einige der Dinge zu sprechen, die ich in diesem Labyrinth sah. Meine Kollegen würden es sowieso nicht verstehen. Ich erzähle niemandem von meinen Kämpfen mit den MOS-Drachen. Ich wurde zu oft verbrannt. Ich erzähle niemandem, wie langweilig es ist, eine Abfrage auszuführen, eine Stunde auf ein Ergebnis zu warten, es erneut zu versuchen, eine Stunde zu warten, es erneut zu versuchen, eine Stunde zu warten ... oops ... Ich bin da eingenickt. Die Irrungen und Wirrungen meiner Jugend heben wir uns besser für ein anderes Mal auf. Vielleicht schreibe ich ein weiteres Buch.

Aber ich habe damals viel gelernt. Im Laufe der Zeit wurde ich besser und wählte den besten Eingang zum Labyrinth für das vorliegende Problem. Denn nur mit Erfahrung wird man mit diesen magischen Performance-Tuning-Elixieren besser. Ich habe auch gelernt, dass manchmal ein Tool das richtige für den Job zu sein scheint, nur um nach einiger Zeit der Feinabstimmung festzustellen, dass ein anderes Tool besser geeignet ist.

Ich habe auch gelernt, dass nur ich mit den Tools arbeite und lerne, worin sie gut sind und umgekehrt, worin sie nicht gut sind, dass ich am besten das geeignete Tool für den Job auswählen kann. Früher fühlte ich mich oft, als würde ich versuchen, eine Schraube mit einem Hammer einzuschlagen. Jetzt sehe ich eine Schraube und weiß, dass das beste Werkzeug ein Schraubendreher ist.

Im Laufe der Zeit habe ich die Zahl der Zugänge zu meinem Leistungstuning-Labyrinth erhöht. Ich gehe immer noch durch die altbewährten Türen wie mit einer mit nur einer Nummer darüber, 10046. In der Vergangenheit wurde mir von magischen Türen erzählt, die zu Regenbogen und Einhörnern führten, nur um noch einen mürrischen alten Troll unter einer zu entdecken Brücke. Ich war anfangs skeptisch, ob Lighty so ein magisches Werkzeug ist, aber da lag ich falsch.

Oh, die Geschichten, die ich Ihnen erzählen könnte, aber diese Geschichte handelt wirklich von diesem Performance-Tuning-Labyrinth. Es läuft immer auf dieses Labyrinth hinaus. Wählen Sie die bestmögliche Tür, aber nur die Erfahrung kann Ihnen sagen, welche die beste ist. So kommen Sie am schnellsten zu Ihrer Lösung. Biegen Sie falsch ab und beginnen Sie von vorne. Scheuen Sie sich nicht, das Labyrinth mehrmals zu betreten. Wenn Sie glauben, die Lösung gefunden zu haben, gehen Sie zur Überprüfung durch das Labyrinth. Dieses magische Performance-Tuning-Labyrinth mit all diesen wunderbaren Dienstprogrammen und Tools zur Leistungsoptimierung von Oracle ist jetzt zu einem meiner Lieblingsorte geworden. Ich füge gerne ständig weitere Eingänge hinzu, in der Hoffnung, dass mich jedes neue Werkzeug viel schneller zum Ende des Labyrinths führt. Manchmal tun sie es und manchmal nicht.

Ich erinnere mich noch an die Tage, als ich mich im alten „Verhältnis-basierten Tuning“-Labyrinth aufgehalten habe, aber ich habe mich auf grünere Weiden begeben. Ich kichere immer noch, wenn ich einen neuen DBA sehe, der vor diesem alten Labyrinth steht, bedeckt mit Spinnweben, und sie können den Hinweis einfach nicht verstehen. Und dann werde ich launisch, wenn ich sie anschreie, sie sollen das Labyrinth vergessen und hierher kommen, wo alle anderen herumhängen, nur um von jemandem verschmäht zu werden, der glaubt, er wüsste es besser. Nun, wenn wir sie jemals wiedersehen, können wir „Ich habe es dir doch gesagt“ sagen und herzhaft lachen.

Ich arbeite oft mit Leuten zusammen, die sehen, wie ich einige dieser glänzenden Werkzeuge verwende. Sie sehen zu, wie ich das Labyrinth betrete und mit der Antwort auf der anderen Seite wieder herauskomme. Ihre offensichtliche nächste Frage lautet also:„Kann ich auch durch diese Tür gehen?“ Ich kichere. „Klar … mach weiter“, sage ich ihnen. Bewaffnet mit diesem coolen Tuning-Tool, aber ohne Wissen darüber, wie man Oracle stimmt, machen sie einen ziemlich guten, aber schwachen Versuch. Sie rufen mich zum Labyrinth und bitten mich, ihnen bei der Lösung des Problems zu helfen. Also starten wir das Tool und schauen es uns an. Ich erkenne sofort die Ursache des Problems, aber der glänzende Schnickschnack des Tools verwirrt den Neuling. An diesem Punkt spreche ich jetzt Klingonisch. Innerhalb von Sekunden sage ich:„Siehst du … genau da … das ist dein Problem.“ und ich bekomme denselben fragenden Blick zurück, den ich vor so vielen Jahren meinem DBA-Mentor zugeworfen habe. Diese Neulinge wollen immer Zugang zu den Werkzeugen und denken, dass sie sie wie ein Meister einsetzen können. Sie haben keine Ahnung, was sich in dem Labyrinth befindet, noch haben sie eine Ahnung, wie man darin navigiert. Zu viele Leute denken, dass die Werkzeuge die geheime Sauce sind, wenn es wirklich die Person ist, die das Werkzeug führt. Leider wollen einige Leute mit Zugriff auf die Tools nur eine schnelle und einfache Antwort. Sie wollen nicht wie so viele von uns Zeit investieren.

Zeit, Zeit, den Meistern zu folgen. Wir alle haben unsere Version von Mt. Rushmore. In Stein gemeißelt. Leute wie Millsap, Lewis und Shallahammer, um nur einige zu nennen. Ihr Mt. Rushmore kann andere oder sogar ähnliche Namen haben. Andere, die unseren in Stein gemeißelten Mt. Rushmore sehen, erkennen nicht, dass diese feinen Menschen unsere Führer im Labyrinth waren. Sie zeigten uns, wie man durch das Labyrinth navigiert. Sie zeigten uns, wie man die Tools benutzt und welche Tools man wann benutzt. Diejenigen von uns, die von den Meistern gelernt haben, versuchen ihr Bestes, um es weiterzugeben und andere zu unterrichten, obwohl wir vielleicht nie so hohe Höhen erreichen werden, und das ist in Ordnung.

Die Moral der Geschichte ist, diese Werkzeuge zu lernen, zu lernen, was sie tun und was sie nicht tun. Erfahren Sie, bei welchen Problemen sie helfen. Nutzen Sie die Tools, aber machen Sie sich bewusst, dass Sie so viel wie möglich lernen müssen, damit Sie selbstbewusst durch das Labyrinth gehen können. Leider muss ich meine Geschichte hier beenden. Jemand kam gerade mit einem anderen Performance-Tuning-Problem in mein Büro. Zeit, das Labyrinth wieder zu betreten. Welche Tür nehme ich jetzt?


No