Oracle Hints und Views ohne Performance-Probleme nutzen

Einige Systeme erstellen komplexe Views zur Darstellung umfangreicher Subsets ihres Schemas, wobei Entwickler und Endbenutzer Zugang zu diesen Views haben. Dieser Ansatz hat oft eine schlechte Performance zur Folge. Es folgenden einige Vorgänge, die Sie beim Umgang mit komplexen Views vermeiden sollten:

  • Abfragen von Subsets – Entwickler führen häufig Abfragen von Subsets komplexer Views durch, ohne dabei zu bedenken, dass sämtliche Tabellen der Views verknüpft werden.
  • Hinzufügen komplexer WHERE-Klauseln – Abfragen von Views mit komplexen WHERE-Klauseln überschreiben häufig sämtliche für die Views festgelegten Einstellungen, was zu Abweichungen von den optimalen Ausführungsplänen führt.
  • Verwenden von Hints für die Views – Views können nicht wie begrenzte Tabellen verwendet werden, weshalb das Hinzufügen von SQL-Hints zu View-Abfragen häufig zu Abweichungen von den optimalen Ausführungsplänen führt. Denken Sie daran, dass der Optimizer bei jeder Störung eine unnötige Tabellen-Überprüfung durchführt. Während die Hints für bestimmte SQL-Optimierungen sinnvoll sein können, wird von der Verwendung von Views in diesem Zusammenhang dringend abgeraten, da sie in zahlreichen Kontexten aufgerufen werden.

Kurz gesagt stellen die Oracle-Views Zusammenfassungen komplexer Abfragen dar und sind daher mit Vorsicht einzusetzen. Hier noch einmal die wichtigsten Fakten:

  • Views sind nicht auf die Optimierung der SQL-Performance ausgelegt. Wenn Sie SQL zusammenfassen möchten, sollten Sie dafür gespeicherte Prozeduren statt Views verwenden.
  • Views verbergen die Komplexität zu Grunde liegender Abfragen, um unerfahrenen Programmierern und Endbenutzern das Erstellen von Abfragen zu erleichtern.
  • Views können verwendet werden, um Abfragen durch Hints zu verändern, immer vorausgesetzt, dass die Views stets im korrekten Kontext eingesetzt werden.

Kombinieren von Hints und Views

Unter dem Hinweis, dass bei der Verwendung von Hints in Views äußerste Sorgfalt geboten ist, folgen hier zwei diesbezügliche Methoden, die keine Performance-Probleme verursachen:

  • Integrieren von Hints in die View-Definition. Dies erweist sich als nützlich, wenn Views ohne eine WHERE-Klausel aufgerufen werden sollen. Die Performance wird jedoch erheblich beeinträchtigt, wenn die Ergebnistabelle der Views durch das Aufrufen der Views über eine komplexe WHERE-Klausel geändert wird.
  • Hinzufügen von Hints zu Abfragen. Die Gefahr der Verwendung von Hints in Views liegt darin, dass sich der Kontext der Abfragen ändern könnte. In diesem Fall würden vorhandene Hints in der View-Definition ignoriert, wodurch eine Störung des SQL-Optimizers und somit eine unnötige Tabellen-Überprüfung verursacht würde.

Wenn Views mit bestimmten WHERE-Klauseln aufgerufen werden, kann sich ihr Kontext ändern. Gleiches gilt für die Funktionen von in diesen Views enthaltenen SQL-Hints.

Das folgende einfache Beispiel zeigt, wie es zu einer solchen Änderung des Kontexts kommen kann:

select
cust_name,
cust_address
from
cust_view
where
cust_nbr = 123;

Wir haben eine View aufgerufen, die bei ihrer Ausführung eine Verknüpfung von drei Tabellen vornimmt, wobei die WHERE-Klausel in der SQL jedoch angibt, dass der Benutzer nur die Daten einer einzigen Tabelle benötigt. Die eventuell in der View enthalten SQL-Hints werden möglicherweise ignoriert.

Schlussbemerkung
Einzeln betrachtet stellen die in Oracle vorhandenen Views, Materialized Views und Hints für SQL-Abfragen nützliche Tools dar, mit denen Einstellungen in Oracle vorgenommen werden können. Dennoch muss bei der Implementierung von Views sehr sorgfältig vorgegangen werden, um sicherzustellen, dass Entwickler und Endbenutzer diese nicht unsachgemäß verwenden, was zu Performance-Problemen führen kann.

 

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Oracle Hints und Views ohne Performance-Probleme nutzen

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *