Ich probiere die parallele Option Orakel in einem Cluster aus und überraschenderweise erhalte ich mit der parallelen Option schlechtere Ergebnisse. Ich hatte eine Verbesserung mit der parallelen Option erwartet, aber sicherlich keine schlechteren Ergebnisse. Ich frage mich, warum dies der Fall ist und ob etwas mit der Art und Weise, wie ich die parallele Option in meinem Cluster verwende, nicht stimmt.
Ich bin mit einem Grad von 4 , wenn die Anzahl der CPUs Ich habe 8 ist habe ich versucht, direkt parallel zum Cluster hinzugefügt ALTER CLUSTER cluster PARALLEL 4
sowohl der Index als auch in der Aussage /*+ PARALLEL_INDEX(clust_index, 4) */
und Tabellen /*+ PARALLEL(4) */
,
Hier ist meine Spur von der Parallele:
Ohne Parallele:
oracle
parallelism
Joe
quelle
quelle
Antworten:
Wenn Sie parallel laufen möchten, müssen Sie dafür entwerfen. Zu berücksichtigen ist die Verwendung von Partitionen, damit diese parallel gescannt werden können. Vergessen Sie nicht, dass Parallelität im Allgemeinen versucht, vollständige Scans für Segmente zu verwenden. Das Beschneiden von Partitionen kann dazu beitragen, die Größe Ihrer Scans zu verringern.
Wenn Sie pq wirklich für diese Art von kleinen Abfragen verwenden, stellen Sie sicher, dass Sie genügend PQ-Slaves zur Verfügung haben. Andernfalls wird das Starten neuer Slaves als Overhead zu Ihrer Abfrage hinzugefügt. Nicht so schlecht für Abfragen vom Typ dss, die stundenlang ausgeführt werden, aber tödlich für Abfragen mit kurzer Laufzeit.
Denken Sie auch daran, Ihre PQ-Abfragen in die Warteschlange zu stellen, um sicherzustellen, dass beim Start einer Abfrage alle erforderlichen Slaves vorhanden sind. Dies kann in Oracle Resource Manager erfolgen.
quelle
Ausgehend von der in Ihren Screenshots gezeigten SQL-Anweisung verbinden Sie zwei Tabellen (Kunde und Verkauf) mit customer_id, während Sie die customer_id auf weniger als 2000 beschränken. Angenommen, es handelt sich um Vanille-Primärschlüssel, die größer als Null sind, und dies ist nichts Besonderes ergibt bei maximal 2000 Zeilen.
Wie Sie sehen, führt die parallele Anweisung außerdem vollständige Scans durch, während die Single-Thread-Abfrage einen Indexbereichsscan durchführen kann.
In diesem Fall treten mit Sicherheit alle Overheads der Parallelität auf und die Anweisung wird in jedem Cluster-Setup langsamer ausgeführt. Versuchen Sie es erneut mit angemessenen Zahlen in Ihren Tabellen und angemessenen analytischen Anwendungsfällen (Tabellen mit einer Größenordnung von 10 Millionen bitte und identifizieren Sie beispielsweise die Top-10-Kunden anhand der Anzahl der Verkaufszeilen).
quelle