SQL Result Cache in Oracle 11g

Ähnliche Dokumente
2010 Oracle Corporation Dr. Norbert Leiendecker

Neue Features Oracle Database 12.2 Wann denn endlich?

Erfahrungen aus dem Betatest Oracle Database 11g

In-Memory-Computing mit der Oracle-Datenbank 11g R2

Oracle Virtual Private Database

Anfrageoptimierung Ausführungspläne, Hints, Statistikinformationen, IDEs

Oracle 9i Einführung. Performance Tuning. Kurs. Teil 10 Stored Outlines. Universität Hannover. Eigenschaften. Migration. Erstellen mit OEM.

Oracle 9i Einführung. Performance Tuning. Kurs. Teil 12 Materialized Views. Universität Hannover. Praxisbeispiel. Migration.

Oracle 11g Release 2: Änderungen unter der Haube. Dierk Lenz DOAG 2011 Konferenz und Ausstellung 16. November 2011

Oracle 10g Einführung

TOra - Toolkit for Oracle

Datenbanken Implementierungstechniken SS2015

Oracle Database 11g: Performance Tuning Release 2 - Deutsch

Performance in der Oracle Datenbank von Anfang an

Performance für Oracle Anwendungen nicht nur für Oracle 11g

Oracle Database 11g Real Application Testing

Oracle Developer Monthly Datenbank-Update für Anwendungsentwickler

Data Dictionary for Oracle

Warum wird mein Index nicht benutzt?

Oracle 9i Einführung Performance Tuning

Performance Tuning mit Oracle 12c

Johannes Ahrends Geschäftsführer CarajanDB GmbH

<Insert Picture Here> Oracle 11g: Ausgewählte Features für Entwickler

Oracle GridControl Tuning Pack. best Open Systems Day April Unterföhring. Marco Kühn best Systeme GmbH

Lutz Fröhlich. Oracle ng. mitp

DOAG Demo Kino: Advisors, Monitoring Werkzeuge in der Datenbank Ulrike Schwinn Business Unit Database Oracle Deutschland B.V.

Speed up your Query - Strategien zur Optimierung von SQL-Queries

Atos - For internal use

Materialized Views. Jan-Peter Timmermann. DOAG Regiotreffen Hamburg: Materialized Views Seite 1

Einleitung. ROLLUP, CUBE und GROUPING. Markus Jägle Art der Info Technische Background Info (April 2002)

Extreme Performance mit Oracle Times Ten

Neue Welten: Externe Daten mit APEX nutzen

Ganzheitliche Optimierung

Materialized Views Praktischer Einsatz vor und in 12c

Oracle 9i Einführung Performance Tuning

Oracle 10g Einführung

Oracle Enterprise Manager 12c Database Express (EM Express)

einfach. gut. beraten. Stabilisierung von Ausführungsplänen Baselines DOAG Konferenz + Ausstellung 2017 Nürnberg Klaus Reimers

Oracle 11g Release 2: Änderungen unter der Haube. Dierk Lenz DOAG 2011 Konferenz und Ausstellung 16. November 2011

2010 Oracle Corporation Dr. Norbert Leiendecker

Kurs. Teil 4 Shared Pool. Universität Hannover. Agenda. Überblick. Library Cache Oracle 9i Einführung Performance Tuning. Trefferquote.

Oracle Database 12c In-Memory Option 7/18/2014. Eckart Mader Oracle Deutschland B.V. & Co. KG. Karlsruhe, den

TOAD und Performance Tuning

Oracle Datenbank Architektur nicht nur für Einsteiger. Martin Klier Klug GmbH integrierte Systeme, Teunz

Oracle Tuning - Theorie und Interpretation

Datenbanken 2. Kapitel 5: Pufferverwaltung und Optimierung von Zugriffspfaden

In-Memory Techniken der Oracle Datenbank

Adaptive Features Fluch oder Segen

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Vergessene (?) SQL- und PL/SQL- Funktionen

Optimizer Statistiken und Adaptive Features in 12.2

Database Memory Techniken für mehr Performance

Indexbasiertes SQL Tuning

SQL Developer 4 DBAs DOAG Datenbank 2015 Düsseldorf Referent Ernst Leber. Düsseldorf, den

Die View von der View von der View PERFORMANTES SQL SCHREIBEN

DOAG Konferenz Was Sie bei modernen Datenbank-Systemen anders machen müssen!

Oracle 12c NF. Was ist wirklich neu? (eine kleine Auswahl) Andrew Lacy Solution Architect

Erfahrungen aus dem Beta-Test der Oracle Database 11g

die wichtigsten Caches (SGA) sind on-the-fly änderbar.

Backup und Restore von Optimizer Statistiken. Peter Stalder

Oracle PL/SQL für Experten - Performance Analyse und Laufzeitoptimierung

Praktische SQL-Befehle

Atos - For internal use

Datenbanken und Oracle, Teil 2

Oracle Datenbank / Ubuntu

Erhöhung der Manageability durch SQL-Profile

Performance-Optimierungmit Memory-Techniken

Memory Management in 12c -Konzepte, Setup und Einsatz

Oracle DB Memory Techniken für mehr Performance

Real World Performance Tour. 19. Februar 2014

Johannes Ahrends Geschäftsführer CarajanDB CarajanDB GmbH

Query Result Caching. Optimierung des Datenbankzugriffs

Senkrecht oder waagerecht Column Store oder Row Store?

Copyright 2012, Oracle and/or its affiliates. All rights reserved.

Undo und Redo - altbekannte Grundlagen?

Ich liebe es, wenn ein Plan funktioniert

Datenbank Tuning. Patrick Schwanke

Performante Verarbeitung großer Datenbanken am praktischem Beispiel

DOAG HC ApEx Workshop. OPITZ CONSULTING GmbH 2009 Seite 1

Performance-Stabilisierung mit Einsatz von SQL Plan Baselines. OPITZ CONSULTING Deutschland GmbH 2013 Seite 1

SQL-Analyse und Tuning

QuickSelect für DB2 (Qsel/DB2)

SAP R/3 Prozessübersicht

app.telemetry Statistiken zu Suchanfragen ad-hoc Reports und Statistik Dashboard Charts Version 2017 Summer Release

Berechnung von Kennzahlen mit der SQL Model Clause

Physischer DB-Entwurf

Fuzzy-Suche in Application Express

Copyright 2013, Oracle and/or its affiliates. All rights reserved.

Hochverfügbarkeit mit Data Guard Möglichkeiten und Grenzen

Exadata und In-Memory Datenbewirtschaftung und Analyse Extrem mit Exadata und InMemory (Erfahrungsbericht)

Oracle Cloud Control 13.2 Compliance Management (Monitoring) mit STIG s für Oracle Datenbanken

Copyright 2012, Oracle and/or its affiliates. All rights reserved.

APEX Datenverwaltung Wo sind die Daten gerade?

SQL. Datenmanipulation. Datenmanipulationssprache. Ein neues Tupel hinzufügen. Das INSERT Statement

Index- und Zugriffsstrukturen für. Holger Brämer, 05IND-P

OXO³ technische Aspekte der Oracle EMEA internen BI Implementierung

IT-Symposium Ralf Durben. Business Unit Datenbank. ORACLE Deutschland GmbH. 1

Oracle Datenbank Architektur - nicht nur für Einsteiger

Performance-Prognosen im Test, trotz Datenschutzauflagen. Daniel Stein. DOAG November 2016

Transkript:

SQL Result Cache in Oracle 11g Autor: Jürgen Vester, ORACLE Deutschland GmbH Eine der interessantesten Neuerungen in Oracle 11g, da sind sich Tom Kyte und Steven Feuerstein einig, stellt das Caching von Result Sets in der SGA dar. In vielen BLOGs werden bereits erste Performance-Zahlen veröffentlicht, die die Erwartungen mehr als erfüllen. Sowohl Web-Anwendungen als auch DHW- und OLTP-Systeme können vom Result Cache profitieren, wenn bestimmte Voraussetzungen gegeben sind. Einmal vom Datenbank-Administrator konfiguriert, steht dieses Feature transparent für die Anwendung zur Verfügung. Der Entwickler kann diese Funktion beispielsweise direkt als Optimizer Hint im SQL-Statement verwenden. Der zur Verfügung stehende Hauptspeicher und die Dimensionierung der SGA spielen eine bedeutende Rolle bei den zu erzielenden Effekten. Mit Oracle 11g können neben den Datenbank-Blöcken auch Ergebnisse von SQLund PL/SQL-Funktionen in einem reservierten Bereich des Shared Pools gecached werden. Das Konzept erinnert an eine "Just-in-time" Materialized View, die im Memory liegt. Dieser neue Pool-Bereich wird vom Automatic-Shared-Memory- Management verwaltet. Sowohl als Hint im SQL-Statement als auch bei PL/SQL- Funktionen wird Memory für den Result Cache allokiert. Bei Änderungen an den Basistabellen wird dieser automatisch auf "invalid" gesetzt und neu aktualisiert. Wird beispielsweise im SQL-Statement der Hint /*+ result_cache */ verwendet, prüft der Optimizer zunächst, ob für diese Query ein passendes Ergebnis im Result Cache zur Verfügung steht. Ist dies der Fall, wird die Query direkt aus dem Result Cache beantwortet und kann zu extrem guten Antwortzeiten führen. Der Result Cache wird über Session-Grenzen hinweg genutzt. Statements mit gleichem oder teilweise identischem Ausführungsplan können vom Result Cache profitieren. Mit Hilfe des Optimizer-Hints /*+ no_result_cache */ lässt sich die Bildung eines Result Sets ausschliessen. Auf Session Ebene kann mit dbms_result_cache.bypass(true) der Result Cache für einzelne Statements umgangen werden. Im Ausführungsplan beziehungsweise im Memory Report wird der Result Cache bei Verwendung angezeigt (siehe Abbildung 1). Beim Einsatz von Real Application Clusters (RAC) werden die Result Caches zwischen den Instanzen

nicht ausgetauscht und müssen bei Bedarf auf jeder beteiligten Instanz disabled werden. Im folgenden Beispiel werden die Tabellen des HR-Schemas benutzt. Die SQL-Syntax wurde um diesen neuen Optimizer Hint SELECT /*+ result_cache */ Col1, Col2 from table; erweitert. HR@ORCL11g>SELECT department_name, emp_cnt FROM(SELECT /*+ result_cache */ department_id, COUNT(*) emp_cnt FROM employees GROUP BY department_id) e, departments d WHERE e.department_id = d.department_id AND CONTAINS(department_name, 'A%')>0; Erweitert man das Statement um die Contains-Klausel für eine Volltextrecherche, kann selbst in diesem Fall der Result Cache genutzt werden. In einer PL/SQL- Funktion wird nach der "result_cache"-klausel die Angabe der Tabelle(n) erwartet. Bei einer Änderung an den zugrunde liegenden Daten der Tabelle(n) wird der Cache für diese Query auf invalid gesetzt und beim nächsten Mal neu gebildet. Nachfolgend das Beispiel für eine PL/SQL-Funktion: HR@ORCL11g>...function f(p1 in Typ_1, p2 in Typ_2,...) return Typ_R result_cache relies_on(tab_1, Tab_2, Tab_3,...) is Der Entwickler kann anhand des Ausführungsplans erkennen, ob sein geschriebenes SQL-Statement die vorhandenen Ergebnisse im Result Cache nutzt. Abbildung 1: Execution Plan mit /*+ result_cache */-Hint im SELECT-Statement

Anwendungsgebiete Gedacht ist der Result Cache für vorhersehbare, sich immer wiederholende Abfragen, bei denen geringe Änderungen an den zugrunde liegenden Datenbeständen vorliegen. Sowohl Abfragen mit kleinen Ergebnismengen als auch langlaufende, komplexe und mit aufwändigeb Berechnungen versehenen Queries und Subqueries, sind optimal für den Einsatz des Result Caches geeignet. Häufig sind diese Abfragen bei DWH-Systemen und Reporting Systemen anzutreffen. Weitere Anwendungsgebiete sind Suchmaschinen, Web-Applikationen und online Auskunftssysteme. Mit dem PL/SQL-Hierarchical-Profiler wurden in Application Express PL/SQL-Funktionen identifiziert, die den Result Cache nutzen können. Nach der Recompilierung einiger Funktionen wurde eine Performance-Steigerung von 15 Prozent gemessen. Administration und Monitoring Die erforderlichen Einstellungen für den Result Cache werden vom DBA mit Hilfe der Initialisierungsparameter RESULT_* statisch oder im laufenden Betrieb vorgenommen. Im Data Dictionary stehen mit den v$result_cache_-views und den gv$result_cache_-views (RAC) Möglichkeiten für das Monitoring zur Verfügung. Neben den Views kann vom DBA das PL/SQL-Paket dbms_result_cache genutzt werden, um Statistiken über die Cache-Nutzung abzufragen. Im Paket sind Funktionen enthalten, um den Result Cache komplett oder gezielt für spezielle Abfragen oder PL/SQL-Funktionen zu leeren. Die Größe des Result Caches wird mit RESULT_CACHE_MAX_SIZE festgelegt und hängt vom jeweiligen Betriebssystem ab: SYS@ORCL11g> alter system set result_cache_max_size=20m; Standardmäßig steht der Wert auf Null, das heißt, der Result Cache kann nicht genutzt werden. Mit RESULT_CACHE_MODE wird die Art geregelt, wie der Result Cache genutzt wird. Dieser Wert steht nach der Installation auf MANUAL, das heißt, nur SQL-Statements die explizit den Optimizer Hint /* +result_cache */ verwenden, dürfen den Result Cache nutzen. Das bietet dem DBA zumindest einen gewissen Grad an Kontrolle. Ist dieser Wert auf FORCE gesetzt, wird versucht, alle Ergebnisse von Abfragen im Result Cache vorzuhalten. Dazu ein Beispiel: SYS@ORCL11g> alter system set result_cache_mode='force';

Wird die Datenbank mit dem Initialisierungsparameter MEMORY_TARGET betrieben, werden 0,25 Prozent für den Result Cache reserviert. Bei Verwendung von SGA_TARGET werden 0,5 Prozent von sga_target für den Result Cache allokiert. Bei SHARED_POOL als Initialisierungsparameter allokiert Oracle 11g 1 Prozent des Shared Pools. Insgesamt werden nicht mehr als 75 Prozent des Shared Pools für den Result Cache reserviert. Der RESULT_CACHE_MAX_RESULT-Parameter spezifiziert, wieviel Prozent des Result Caches für ein einziges Ergebnis maximal benutzt werden darf. Der Parameter steht standardmässig auf 5 Prozent. Der Result Cache Memory Report kann mit SYS@ORCL11g> exec dbms_result_cache.memory_report; vom DBA abgerufen werden. Dazu zwei Beispiele: Flushen des gesamten Result Caches: SYS@ORCL11g>exec dbms_result_cache.flush(); und Flushen des Result Caches für eine oder mehrere Tabellen: SYS@ORCL11g>exec dbms_result_cache.invalidate('employees',); Einschränkungen Der Result Cache kann beispielsweise nicht für Dictionary- und Temporary-Tables, SQL-Funktionen wie SYSDATE, SYS_CONTEXT und nicht deterministische PL/SQL-Funktionen eingesetzt werden. Bei Tabellen, die sehr starken DML- Operationen unterworfen sind, kann sich die Performance sogar verschlechtern. Im Oracle Database Performance Tuning Guide sind im Kapitel 7die Restriktionen exakt beschrieben. Fazit Das Feature kann für Anwendungen zu sehr großen Performance-Verbesserungen führen. Optimale Ergebnisse sind bei Anwendungen zu erwarten, die häufig die gleichen Abfragen ausführen und deren Daten relativ geringen Änderungen unterworfen sind. Bei OLTP-Applikationen hängt dies sehr stark von der Anwendung ab. Der Result Cache kann als eine einfache Form des SQL- bzw. PL/SQL-Tunings verstanden werden. Die Nutzung des Features ist für DBAs und Entwickler sehr einfach. Das Feld für Anwendungen ist breit gefächert. Wie Standard ERP- Anwendungen dieses Feature nutzen können, wird die Zukunft zeigen. Ein Result-

Cache-Advisor für die Dimensionierung im Grid Control steht nicht zur Verfügung. Weitere Informationen und Beispiele stehen im Oracle Technology Network unter folgenden URL s zur Verfügung: Tom Kyte http://www.oracle.com/technology/oramag/oracle/07-sep/o57asktom.html Steven Feuerstein http://www.oracle.com/technology/oramag/oracle/07-sep/o57plsql.html Arup Nanda http://www.oracle.com/technology/pub/articles/oracle-database-11g-topfeatures/11g-caching-pooling.html Kontakt: Jürgen Vester juergen.vester@oracle.com