Oracle Statistiken im HORIZON-Umfeld Highway to Statistics Oracle Statistiken im HORIZON-Umfeld Lars Eisenblatt, Coniatos AG, Wolfgang Graf, FIDUCIA IT AG, ITB2DC| JBFOne 2009
Ziel dieses Vortrags Sie erfahren die Abläufe zum Optimieren eines SQL-Statements Sie lernen verschiedene Basis-Schritte eines Zugriffsplanes und deren spezifische Vor- und Nachteile kennen Sie erkennen, was notwendig ist, um SQL-Anweisungen mit optimalem Ressourcenverbrauch auszuführen Sie erfahren, warum für SOA durch den Betrieb neue Verfahren entwickelt werden
Agenda Funktionsweise der Oracle Cost Based Optimizers (CBO) Oracle Tabellen-Statistiken Anpassung der Oracle Statistiken an HORIZON Fazit und Ausblick
Agenda Funktionsweise der Oracle Cost Based Optimizers (CBO) Oracle Tabellen Statistiken Anpassung der Oracle Statistiken an HORIZON Fazit und Ausblick
vom SQL zum Ausführungsplan Stored Outlines/ Profiles Cursor Sharing ja Ausführungsplan v$sql Stored Outlines/Profiles vorhanden und aktiviert? nein regelbasierter Optimizer (Obsolete) Literale ersetzen Wahl des Optimizers
TABLE ACCESS (BY ROWID) SELECT * FROM messdaten WHERE rowid = :b1; OPERATION OPTION OBJECT_NAME ---------------- -------------- ------------ SELECT STATMENT TABLE ACCESS BY ROWID A A
db_file_multiblock_read_count TABLE ACCESS (FULL) SELECT count(*) FROM messdaten; OPERATION OPTION OBJECT_NAME --------------------------------------------- SELECT STATMENT TABLE ACCESS FULL MESSDATEN db_file_multiblock_read_count
Ergebnis ist bereits sortiert! INDEX (RANGE SCAN) SELECT * FROM messdaten WHERE id BETWEEN 20 AND 30 ORDER BY id; Plan ----------------------------------- SELECT STATEMENT INDEX RANGE SCAN messdaten_pk Ergebnis ist bereits sortiert! Logisch Physikalisch
Aber tolle Buffer Hit Ratio Nested Loop A B SELECT * FROM a, b WHERE a.id = b.id Plan ------------------------- SELECT STATEMENT NESTED LOOP TABLE ACCESS FULL A TABLE ACCESS FULL B Aber tolle Buffer Hit Ratio
Hash Joins Plan ----------------------- SELECT STATEMENT HASH JOIN TABLE ACCESS FULL A TABLE ACCESS FULL B Hash usw. usw. usw. ... A B Hauptspeicher
Optimizer Um einen optimalen Plan aus Operationen heraus zu bauen, benötigt der Cost Based Optimizer Informationen darüber, wie viele Rows in jedem Schritt erzeugt werden Die Anzahl der Rows entspricht etwa den Kosten für die Operation Der Optimizer wählt den Plan, der durch Kombination verschiedener Operationen die niedrigsten Kosten verursacht Die Schätzung erfolgt an Hand der zyklisch generierten, in der DB gespeicherten „Statistiken“ Min,max Werte Anzahl unterschiedlicher Werte (Number Distinct Value) Sortiertheit der Datenblöcke über einen Index (Clustering Factor) Unterstützt durch Annahmen aus dem physikalischen Layout, z. B. alle Partitionen etwa gleich groß Stimmen die Statistiken nicht, wird ein falscher Plan ausgewählt
Ausführungspläne & CBO Ausführungsplan SQL /*+ HINTS */ USE_NL... FULL... INDEX... Objekt Statistiken OPTIMIZER_MAX_PERMUTATIONS OPTIMIZER_INDEX_COST_ADJ System Statistiken init.ora
Agenda Funktionsweise der Oracle Cost Based Optimizers (CBO) Oracle Tabellen Statistiken Anpassung der Oracle Statistiken an HORIZON Fazit und Ausblick
ORACLE Tabellen Statistiken BATCH B BATCH C BATCH A BATCH D ORACLE gather_stats() (Zeit)
SOA Tabellen Statistiken - pro Service BATCH B POST PRE BATCH C BATCH A PRE BATCH D POST Batch unabh.Statistiksammlung (Zeit)
Agenda Funktionsweise der Oracle Cost Based Optimizers (CBO) Oracle Tabellen Statistiken Anpassung der Oracle Statistiken an HORIZON Fazit und Ausblick
Tabellen Klassifizierung technische Tabellen wie JBF00* ZVBAS_MESSAGE_ID_T01 KONTO_SPUMSATZ_A_T01 KONTO_SPPROTOKOLL_A_T01 PROD01_KONTO_* ZVBAS_LOBTABREF_T01 JoJo Tabellen täglich Auslagerung Dictionary Dyn. Sampling
Technische Lösung CRONACLE DAILY MONTHLY DICTIONARY ZVBAS
Technische Lösung Protokolltabelle Samplesize Zustand Dyn. Sampling Global Stale Partition Stale Max Runtime Gruppenzuordnung Cronacle Gruppe Tabellenname ------ ------------------------ DAILY ZVBAS_PAYMENTMSGFILE_T01 DAILY ZVBAS_SWAP_T01 DAILY KONTO_SPUMSATZ_T01 (StoredProc)
Agenda Funktionsweise der Oracle Cost Based Optimizers (CBO) Oracle Tabellen Statistiken Anpassung der Oracle Statistiken an HORIZON Fazit und Ausblick
Resümee SOA Statistiken Zentrale Steuerung Dynamic Sampling Restart Qualität
Automatische Laufzeitbegrenzung und -überwachung Zukunft Automatische Laufzeitbegrenzung und -überwachung Reporting DBMS Portal Berücksichtigung der Statistikanforderungen bereits im Datenmodell Einsatz außerhalb von HORIZON
Fragen? – Diskussion? Lars Eisenblatt coniatos AG Kreuzberger Ring 13 65205 Wiesbaden Lars.Eisenblatt@coniatos.de Wolfgang Graf FIDUCIA IT AG ITB2DC Wolfgang.Graf@fiducia.de
Ihr IT-Partner Vielen Dank