Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Abfrageverarbeitung » Abfragen optimieren und ausführen » Algorithmen zur Abfrageausführung » Typen von Algorithmen » Sortieralgorithmen

 

Sort-Algorithmus (Sort)

Sort liest die Eingabe in den Speicher ein, sortiert sie im Speicher und gibt die Ergebnisse dann aus. Wenn die Eingabe nicht vollständig in den Speicher passt, werden mehrere sortierte Durchläufe erstellt und dann zusammengeführt. Der Sort-Operator gibt keine Zeilen aus, solange nicht alle Eingabezeilen gelesen wurden. Die Eingabezeilen werden vom Sort-Operator gesperrt.

Wenn Sort in einer Umgebung ausgeführt wird, in der sehr wenig Cachespeicher vorhanden ist, kann er eventuell nicht abgeschlossen werden. In diesem Fall sortiert Sort den Rest der Eingabe unter Anwendung eines indexbasierten Sortierverfahrens. Eingabezeilen werden gelesen und in eine Arbeitstabelle eingefügt, dann wird ein Index für die zu sortierenden Spalten der Arbeitstabelle erstellt. In diesem Fall werden die Zeilen mithilfe eines komplexen Index-Scans aus der Arbeitstabelle ausgelesen. Diese indexbasierte Strategie ist deutlich langsamer. Der Optimierer vermeidet die Erstellung von Zugriffsplänen unter Verwendung von Sort, wenn er feststellt, dass während der Abfrageausführung eventuell zu wenig Speicher zur Verfügung stehen könnte. Wenn die Index-basierte Strategie aufgrund unzureichenden Speichers verwendet werden muss, wird ein Performance-Zähler erhöht. Sie können diesen Monitor mithilfe der QueryLowMemoryStrategy-Eigenschaft lesen, oder im Zähler "Abfrage: Strategien für Speichermangel" im Windows-Systemmonitor.

Die Speichermenge, die von einem Sort-Operator verwendet werden kann, hängt von der Multiprogramming-Stufe des Datenbankservers und der Anzahl der aktiven Verbindungen ab. Weitere Hinweise finden Sie unter Threads in SQL Anywhere und Die Multiprogramming-Stufe des Servers einstellen.

Die Performance der Sortierung wird von der Größe des Sortierschlüssels, der Zeilengröße und der Gesamtgröße der Eingabe beeinflusst. Für lange Zeilen kann sich die Verwendung eines VALUES SENSITIVE-Cursors als kostengünstiger herausstellen. In diesem Fall werden die Spalten in der SELECT-Liste nicht in die Arbeitstabellen kopiert, die die Sortierung verwendet. Da Sort keine Ausgabezeilen in eine Arbeitstabelle schreibt, müssen die Ergebnisse von Sort materialisiert werden, bevor man Zeilen an die Anwendung zurückgibt. Um dies sicherzustellen, fügt der Optimierer nötigenfalls eine Arbeitstabelle hinzu.