Untersuchung der Grenzen paralleler Oracle 11g-Abfragen
Bezüglich Ihres Problems, dass Oracle 11g nicht mehrere CPUs für eine bestimmte SQL-Abfrage nutzt, ist es wichtig, es zu verstehen die Feinheiten der Oracle-Parallelität. Um dies zu optimieren, sind umfassende Kenntnisse und eine sorgfältige Analyse verschiedener Faktoren erforderlich.
Richtige Untersuchung
Berücksichtigen Sie bei der Fehlerbehebung bei Parallelität die folgenden Fragen:
- Wie viele parallele Server wurden angefordert?
- Wie viele parallele Server wurden zugewiesen?
- Wie viele Parallele Server wurden effektiv genutzt?
Effektive Tools
-
SQL-Überwachung mit aktiven Berichten: Bietet detaillierte Informationen zu jeder Ausführung Schritt, der die Parallelitätsnutzung und mögliche Engpässe aufdeckt.
-
Erklären Sie den Plan für ... und wählen Sie * aus table(dbms_xplan.display);: Analysiert den Abfrageplan und enthält Hinweise, die erklären, warum Parallelität möglicherweise nicht angewendet wurde.
Faktoren, die die Parallelität beeinflussen
Zahlreiche Faktoren bestimmen die Anzahl der zugewiesenen parallelen Server, darunter:
- Interoperation Parallelität (z. B. Sortieren, Gruppieren)
- Abfragehinweise
- Rekursives SQL
- Sitzungsparameter ändern
- Tabellen- und Indexgrad
- Optimierer Kostenüberlegungen
- Planverwaltung Mechanismen
- Oracle Edition und Lizenzierung
- Systemparameter (z. B. PARALLEL_ADAPTIVE_MULTI_USER, PARALLEL_DEGREE_LIMIT)
- CPU-Anzahl und Systemlast
- Parallele DML-Einschränkungen
- Bugs und Parsing-Probleme
Methoden zur Fehlerbehebung
Um Ihre spezifische Abfrage zu beheben, versuchen Sie Folgendes:
-
Überprüfen Sie die Erklärung Planhinweise: Suchen Sie nach Gründen, warum es keine Parallelität gab angefordert.
-
SQL-Überwachungsberichte analysieren: Identifizieren Sie langsame Schritte und Parallelitätsnutzung.
-
Systemparameter anpassen: Erwägen Sie die Änderung von Parametern wie PARALLEL_DEGREE_LIMIT und PARALLEL_MIN_SERVERS.
-
Parallel aktivieren Hinweise: Fordern Sie Parallelität explizit mit Hinweisen auf Anweisungs- oder Objektebene an.
-
Nicht-parallele Objekte ausschließen: Verwenden Sie nicht-parallele Hinweise auf Objektebene, um die serielle Ausführung für bestimmte Tabellen zu erzwingen.
-
Parallele DML-Einschränkungen überprüfen: Stellen Sie sicher, dass Ihre Abfrage dies nicht tut gegen eine der Einschränkungen für paralleles DML verstoßen.
Denken Sie daran, dass Parallelität eine nuancierte Funktion ist und für eine effektive Optimierung gründliche Untersuchung und Verständnis erfordert.
Das obige ist der detaillierte Inhalt vonWarum verwendet meine Oracle 11g-Abfrage nicht mehrere CPUs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!