Intelligentere Auswahlmöglichkeiten für die Ausführung von SQL-Abfragen

September 24

Orange und blaue Codezeilen

RDM SQL verwendet eine kostenbasierte Methode zur Optimierung einer Abfrage, bei der Informationen zur Datennutzung vom Abfrageoptimierer analysiert werden, um den schnellsten Weg zur Ausführung einer Abfrage zu ermitteln. In RDM 11 waren die für SQL verfügbaren Informationen auf die Anzahl der Zeilen in den referenzierten Tabellen sowie auf alle zusätzlichen Informationen beschränkt, die der Benutzer über die optionalen Klauseln zur Deklaration eindeutiger Werte und Bereichsspalten in der Anweisung create table bereitgestellt hat.

Bei grundlegenden Abfragen verursacht dies keine Probleme, da diese Auswahlmöglichkeiten für die Ausführungsoptionen einfach sind. Bei komplexeren Abfragen, bei denen Daten aus mehreren Tabellen abgerufen werden, die a erfüllen wo Wenn diese Klausel aus mehreren bedingten Ausdrücken besteht, können diese Einschränkungen zu einer spürbaren Leistungsminderung führen.

In RDM 12.0 wurde die Fähigkeit von SQL, gute Entscheidungen für Ausführungspläne zu treffen, die zu Abfragen führen, die schneller ausgeführt werden, erheblich verbessert. Eine neue Aussage, Statistiken aktualisieren (Statistiken) kann jetzt in einer aufgefüllten Datenbank ausgeführt werden, die Datenverteilungsstatistiken für jede Spalte jeder Tabelle in der Datenbank sammelt. Diese Daten werden dann vom SQL-Optimierer verwendet, um die Zugriffskosten für jede mögliche verfügbare Methode für den Zugriff auf die Zeilen jeder Tabelle, auf die in der Abfrage verwiesen wird, besser vorherzusagen.

Die Menge der abzutastenden Daten und der Umfang der zu speichernden Verteilungsdaten werden vom Benutzer durch optionale Klauseln in der Statistiken aktualisieren Aussage. Je größer die Datenbank, desto länger kann es dauern Statistiken aktualisieren die Verteilungsdaten zu sammeln. Dies wird verringert, da der Benutzer die Menge der gelesenen Daten steuern kann, indem er einen Prozentsatz der abzutastenden Datenbank angibt. Darüber hinaus ist die Datenerfassung mit der von a angegebenen Anzahl von verwendeten Threads multithreaded Statistiken aktualisieren Klausel oder standardmäßig auf die Anzahl der Kern-CPUs auf dem Computer festgelegt.

Außerdem können Sie eine Bedingung angeben, die dazu führt, dass das System automatisch ausgeführt wird aktualisieren Statistiken basierend darauf, wie stark sich die Datenbank seit dem letzten Lauf geändert hat. Daher müssen Sie möglicherweise nur manuell ausführen Statistiken aktualisieren einmal und das System steuert automatisch zusätzliche Läufe basierend auf den Änderungsparametern, die Sie bei diesem ersten Lauf angegeben haben.

Gespeicherte Prozeduren können eine oder mehrere enthalten wählen Anweisungen, die unter Verwendung der Statistiken erstellt und optimiert wurden, die zum Zeitpunkt der Prozedur erstellen wurde ausgeführt. Gespeicherte Prozeduren ermöglichen die Verwendung vorkompilierter SQL-Anweisungen, sodass die Kompilierungskosten nicht zur Ausführungszeit der Anwendung anfallen müssen. RDM 12 SQL hat das hinzugefügt automatisch kompilieren Klausel zum Prozedur erstellen Anweisung, die bewirkt, dass SQL die gespeicherte Prozedur automatisch neu kompiliert, falls ein Statistiken aktualisieren wurde seit der letzten Ausführung der Prozedur ausgeführt. Dies erhöht natürlich die Kosten für die Neukompilierung der Ausführungszeit für diese bestimmte Ausführung, aber in vielen Fällen sind alle nachfolgenden Ausführungen aufgrund der Änderungen in der Datenverteilungsstatistik und der positiven Auswirkung auf den Ausführungsplan des Optimierers schneller Wahl.

Die gesammelten Statistiken werden in einer Datei mit dem Namen gespeichert Datenbankname.sts im selben Verzeichnis im TFS wie die Datenbankdateien und die Katalogdatei (Datenbankname.Katze).

Es werden vier neue Systemkatalogdateien bereitgestellt, die abgefragt werden können, um die gesammelten Statistiken anzuzeigen. Beispielsweise enthält die Tabelle sys$dbstats eine Zeile für jede geöffnete Datenbank, in der eine Statistiken aktualisieren wurde ausgeführt. Zu den Informationen in der Tabelle gehört eine Versionsnummer der Statistikdatei sowie das Datum, an dem Statistiken aktualisieren wurde zuletzt ausgeführt, die Ausführungszeit für die Statistiken aktualisieren, die Gesamtzahl der in der Datenbank gespeicherten Zeilen zusammen mit den Werten der einzelnen Zeilen Statistiken aktualisieren Regelparameter. Andere Tabellen umfassen sys$tabstats, sys$colstats und sys$colhisto. Diese letzte Tabelle enthält die gesammelten Verteilungsstatistiken für jede Spalte in der Datenbank. Verwendung dieser Informationen zusammen mit einem Verständnis der Funktionsweise des Optimierers, wie in „Wie Abfragen von RDM SQL verarbeitet werden”Kann Ihnen bei der Analyse bestimmter SQL-Abfragen helfen.

Mit der Verfügbarkeit von Datenverteilungsstatistiken in RDM 12 SQL können die Vorteile einer ausgeklügelten kostenbasierten Abfrageoptimierung in RDM 12 SQL-Anwendungen voll ausgeschöpft werden.

Get notified about new RDM updates

Be the first to know about new Raima Database Manager updates when they go live, use cases, industry trends and more.