Vor nicht allzu langer Zeit habe ich unseren Anwendungsentwicklungsmitarbeitern ein Tutorial zu Explain Plan gegeben. Eine Frage, die auftauchte, war, wie ich entscheiden soll, welche SQL-Anweisungen optimiert werden müssen. Ich verwende ein paar verschiedene Ansätze und finde SQL-Tuning-Kandidaten aus verschiedenen Blickwinkeln.
- Ich führe routinemäßig Codeüberprüfungen von SQL-Anweisungen durch, die unsere Datenbank treffen. Ich nutze meine Erfahrung, um schnell eine SQL-Anweisung zu betrachten, die neu ist oder erheblich geändert wurde, um zu entscheiden, ob ich die SQL weiter untersuchen muss. Wenn beispielsweise eine Abfrage in einer Tabelle nach einer PK- oder Unique-Spalte sucht, kann ich ziemlich sicher sein, dass sie schnell ausgeführt wird. Wenn mir die SQL-Anweisung verdächtig vorkommt, werde ich sie durch Explain Plan laufen lassen und/oder die Anweisung timen, um sicherzustellen, dass sie ausreichend ausgeführt wird.
- Ich lasse mich vom Enterprise Manager von Oracle auf Ressourcenkonflikte in unserem Testdatenbanksystem hinweisen. Alle SQL-Anweisungen, die ich während der Codeüberprüfung übersehen habe, können manchmal hier gefunden werden. Wenn ich eine Warnung über Ressourcenkonflikte erhalte, springe ich ein und sehe, ob eine oder zwei SQL-Anweisungen ein Problem verursachen. Dies ist meine letzte Chance, SQL-Anweisungen abzufangen, bevor sie in Produktion gehen.
- Ich nutze Ignite für Oracle. Dieses Produkt ist von Confio, aber Confio ist jetzt Teil von Solarwinds. Normalerweise schließe ich keine Produkte von Anbietern an, aber in diesem Fall mache ich eine Ausnahme. Was ich an Ignite mag, ist, dass ich jeden Montag einen Bericht per E-Mail bekomme. Der Bericht enthält die Top-N-Straftäter basierend auf der Wartezeit. Ich brauche Sekunden, um mir diesen Bericht anzusehen. Ich suche nach den großen Balken im Bericht. Im Beispiel-Screenshot unten sehen Sie einen blauen Balken, der sofort Ihre Aufmerksamkeit erregt. Die Zahl rechts ist ein ID-Wert und wenn Sie darauf klicken, können Sie den SQL-Text abrufen. Dies ist eine großartige Möglichkeit, die SQL-Anweisungen zu identifizieren, die optimiert werden müssen. Es ist superschnell und supereinfach.
Wie Sie sehen können, versuche ich, problematische SQL-Codes zu finden, während sie entwickelt werden, wenn sie sich in unserem Testsystem befinden und sogar nachdem sie in die Produktion gegangen sind.