Der ganze Execution Plan ist eher teuer. Du benutzt ja NUR
Nested Loops. Das ist gut - wenn die Mengen klein oder alle
Zeilen nötig sind. Stell mal die Where bedingungen um und
lass das SELECT nochmals durchlaufen. Mach mal auf jedes
Attribut in der WHERE BEdingung einen Suchindex. Schau, ob
sich der Ausführungsplan verbessert.
Das Sql-Statement führt eine join-Operation über vier Tabellen aus. Ich sehe da kaum Möglichkeiten, durch Umstellen diese Loops zu umgehen.
Siehst du das anders?
- I/O verringern. Wenn Du ständig auf dieselben Tabellen
zugreifst kannst Du die KEEP Option nutzen. Dann bleiben die
Daten im Speicher.
ALTER TABLE xxx STORAGE ( BUFFER_POOL KEEP );
Das klingt sehr interessant. Werde es gleich morgen mal ausprobieren.
- Wenn Du auf Untermengen davon oft zugreifts, kannst Du
einen Materialized View verwenden (Snapshot)
Ich brauche die Dynamik. DML findet zwar selten statt,
Änderungen müssen aber asap sichtbar sein.
Auch das läßt sich mit einem Snapshot machen. Gerade bei
seltenen Änderungen ist er umso effektiver.
Ich habe den Materialized View als eine Art Schnappschuss der Datenbank verstanden, also ein Replikat von Tabellen. Der join meiner Tabellen
sieht wie folgt aus: T1 x T2 x T3 x T4
T1 - ca. 10.000.000 Datensätze
T2 - m:n Relation Table für T1 und T3
T3 - einige dutzend Datensätze
T4 - einige hundert Zeilen
In T1 kommen von Zeit zu Zeit Zeilen hinzu, T2 ändert von Zeit zu Zeit die Beziehungen. Änderungen müssen ASAP sichtbar werden. T3 und T4 sind nahezu konstant.
Siehst du da Chancen?
- Die Systemeinstellungen.
Was gibt es da zu beachten?
Die SGA nicht zu hoch setzten. Dort werden die SQL-Befehle
gepuffert. Wenn dieser Bereich zu groß ist, verliert man mehr
Zeit durch Suchen als man gewinnt. 100 MB sind für JEDE DB
mehr als ausreichend.
D.h. mit einer kleineren SGA kann man CPU Zeit einsparen? Hört sich zumindets logisch an.
BUFFER POOL hochsetzen. Hubraum ist durch nichts zu ersetzen
außer durch Hubraum.
Mehrprozessormaschine? Dann lass Oracle sie auch benutzen.
Literaturempfehlung: Thomas Kyte (beide Bücher) Sind auf
englisch, aber sehr gut zu lesen.
Ich habe zwei Bücher von ihm: wie nutze ich die CPU’s optimal aus?
Gruß Markus