SQL Anywhere unterstützt zwei unterschiedliche Arten von Parallelität bei der Abfrageausführung: abfrageinterne und abfrageübergreifende Parallelität. Abfrageübergreifende Parallelität (Inter-Query-Parallelität) bedeutet, dass verschiedene Abfragen gleichzeitig auf separaten CPUs ausgeführt werden. Jede Anforderung (Task) läuft in einem einzelnen Thread und wird auf einem einzelnen Prozessor ausgeführt.
Abfrageinterne Parallelität (Intra-Query-Parallelität) bedeutet, dass mehrere CPUs gleichzeitig eine einzelne Anforderung verarbeiten, sodass Teile der Abfrage parallel durch Multi-Prozessor-Hardware berechnet werden. Die Verarbeitung dieser Teile wird vom Exchange-Algorithmus durchgeführt. Siehe Exchange-Algorithmus (Exchange).
Die abfrageinterne Parallelität kann die Systemlast verbessern, wenn die Anzahl der gleichzeitig ausgeführten Abfragen normalerweise geringer ist als die Anzahl der verfügbaren Prozessoren. Der Höchstgrad der Parallelität wird durch die max_query_tasks-Option kontrolliert. Siehe max_query_tasks-Option.
Der Optimierer schätzt die Extrakosten der Parallelität (zusätzliches Kopieren von Zeilen, Zusatzkosten für Koordination der Aufgaben) und wählt parallele Pläne nur aus, wenn sie die Performance verbessern können.
Die abfrageinterne Parallelität wird nicht bei Verbindungen angewendet, für die die Priority-Option auf "background" gesetzt wurde. Siehe priority-Option.
Die abfrageinterne Parallelität wird nicht angewendet, wenn die Anzahl der Server-Threads, die gerade eine Anforderung bearbeiten (Servereigenschaft "ActiveReq"), die Anzahl von CPU-Kernen des Computers überschreitet, für dessen Benutzung der Datenbankserver lizenziert ist. Über die genaue Zeitspanne entscheidet der Server. Dabei handelt es sich normalerweise um ein paar Sekunden. Siehe Datenbankservereigenschaften.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |