Performance Technologien im Überblick
Buffer Cache, Result Cache, Column Store und Automatisierung mit ILM
Ulrike Schwinn
...
Caching Technologien über die Jahre ...
• Buffer Cache Erweiterungen über KEEP und RECYCLE Pool für Segmente
• Full Databa...
Database Buffer
Default Cache
Keep Cache
Recycle Cache
LRU-Algorithmus
TimesTen IMDB
TimesTen Application-Tier
Database Ca...
Database Buffer
Default Cache
Keep Cache
Recycle Cache
LRU-Algorithmus
TimesTen IMDB
TimesTen Application-Tier
Database Ca...
Standard System Global Area (SGA) Komponenten
Buffer Cache Shared Pool Large Pool
Copyright © 2014 Oracle and/or its affil...
Der Buffer Cache
• Manuelle Konfiguration des (Default) Buffer Cache über
Parameter DB_CACHE_SIZE
– Nutzung der Standard B...
Monitoring der Buffer Cache Nutzung über V$BH
SELECT o.object_name, o.object_type, o.owner, COUNT(*) NUMBER_OF_BLOCKS
FROM...
Buffer Cache Pools: KEEP und RECYCLE POOLS
• Häufig und weniger häufig genutzte Objekte in verschiedenen
Pools
– Initialis...
KEEP-Pool: Vorgehensweise
1. Pool-Größe definieren: DB_KEEP_CACHE_SIZE
2. Objekte per Storage-Klausel dem KEEP-Pool zuweis...
Pre-Loading der Objekte
• Auslösen eines Objekt-Scans über die Tabelle, den Index, das Lobsegment
• Prinzipiell eine SELEC...
Full Database Caching
• Ziel: Datenbank komplett in der SGA (Buffer Cache) halten
• Neues Feature in 12.1.0.2
• Force Full...
Full Database Caching: Vorgehensweise
• Sicherstellen, dass der Buffer Cache tatsächlich groß genug ist
• Force Full Datab...
Sogar PL/SQL Objekte "In-Memory"
• PL/SQL-Objekte werden bei Nutzung in die SGA (Library Cache) geladen
– Packages, Proced...
Database Buffer
Default Cache
Keep Cache
Recycle Cache
LRU-Algorithmus
TimesTen IMDB
TimesTen Application-Tier
Database Ca...
Database Smart Flash Cache ("Flash Cache")
• Erweiterung des Datenbank Buffer Caches
– SSD ist wie ein Level 2 Cache (SGA ...
Wann nutze ich den Database Flash Cache ...?
1. Datenbank läuft auf Linux oder Solaris
2. Performance-Flaschenhals liegt b...
Nutzung des Database Flash Cache
• Init-Parameter einstellen
– db_flash_cache_file = {OS-Pfad zur Flash Disk}
– db_flash_c...
Database Buffer
Default Cache
Keep Cache
Recycle Cache
LRU-Algorithmus
TimesTen IMDB
TimesTen Application-Tier
Database Ca...
• Eigener Cache im Shared Pool
• Automatischer Refresh bei Daten-Änderungen !
• Einfaches Setup und Monitoring der Cache-N...
Query und PL/SQL Result Caches - Konfiguration
• Initialisierungsparameter
RESULT_CACHE_MAX_RESULT 5 (%)
RESULT_CACHE_MAX_...
• Informationen über einzelne Statements und ihre Cache-
Informationen => Ausführungsplan
Monitoring
Copyright © 2014 Orac...
Query Result Cache: Ein Beispiel
SELECT
a.department_id "Department",
a.num_emp/b.total_count "%_Employees",
a.sal_sum/b.t...
Result Cache: Query Hints
Copyright © 2014 Oracle and/or its affiliates. All rights reserved.
Result Cache-Informationen im Ausführungsplan
Result Cache Information (identified by operation id):
---------------------...
Result Cache-Informationen in den Statistiken
Statistiken
----------------------------------------------------------
0 rec...
Monitoring des Result Cache
SQL> set serveroutput on
SQL> execute dbms_result_cache.memory_report()
R e s u l t C a c h e ...
PL/SQL Result Cache
• Result Cache für PL/SQL Function Results
– Aktiv, wenn PL/SQL-Funktionen von PL/SQL aus aufgerufen w...
Database Buffer
Default Cache
Keep Cache
Recycle Cache
LRU-Algorithmus
TimesTen IMDB
TimesTen Application-Tier
Database Ca...
Neue SGA Komponente: In-Memory Area
Buffer Cache Shared Pool Large Pool
Copyright © 2014 Oracle and/or its affiliates. All...
In-Memory Column Store – Kurzbeschreibung
• Reines In-Memory Format
• Nutzung unterschiedlicher
Komprimierungsarten (2x bi...
• Der Column Store ist statisch und folgt keinem LRU (Least Recently
Used) Algorithmus
• Der Column Store ist ein reines M...
• Beides - Row und Column
In-Memory Formate - für
die gleiche Tabelle
• Real Time Analysen nutzen
das neue Column Format
M...
1. Memory Allokation in der SGA über neuen Initialisierungsparameter
und danach Start der Datenbank
– Setzen von INMEMORY_...
Monitoring von In-Memory Scans im Ausführungsplan
• Beispiel: Schlüsselwort INMEMORY FULL
SQL> select * from table(dbms_xp...
Verwendung
• Kostenintensive Abfragen, die aus Table Scans resultieren, identifizieren
(Anwender, AWR, statspack, Advisor)...
Database Buffer
Default Cache
Keep Cache
Recycle Cache
LRU-Algorithmus
TimesTen IMDB
TimesTen Application-Tier
Database Ca...
Partitionierung und mehr ...
• Tabellen partitionieren
– "Heiße" Daten in einer Partition In Memory
– "Normale" in weitere...
• ILM Integration in den Datenbank Kern selbst
durch neue Features wie (*)
– Heat Map
– Automatic Data Placement /Optimiza...
Das Konzept: Heat Map Tracking
• Eine Heat Map liefert Zugriffsinformationen auf die
Daten
• Ebenen
Segment: Welche Tabell...
Heat Map im Enterprise Manager
Copyright © 2014 Oracle and/or its affiliates. All rights reserved.
Automatische Datenoptimierungen
• Vor: Aktivierung der Heat Map
• Umfassen folgende Aktionen
– Komprimieren von Daten
Bewe...
Automatische Segment Komprimierung
• Für Tabellen (Vererbung auf Partitionen)
ALTER TABLE sh.sales
ILM ADD POLICY
row stor...
Automatische Verlagerung (Storage Tiering)
SOURCE
Tablespace
TARGET
Tablespace
SOURCE
Tablespace
T1 Zugriff letzte Woche
T...
Automatische Verlagerung am Beispiel
Policy anlegen
ALTER TABLE scott.employee
ILM ADD POLICY
TIER TO low_cost_store;
ORDE...
Zusammenfassung
Daten Klassifikation Automatisches Durchführen
Bereiche(Scope) Aktionen
Automatische Erkennung
Bedingungen...
Database Buffer
Default Cache
Keep Cache
Recycle Cache
LRU-Algorithmus
TimesTen IMDB
TimesTen Application-Tier
Database Ca...
Fazit
• In-Memory Technologien und Caches der Oracle-Datenbank
– Buffer Cache: KEEP und RECYCLE, Flash Cache, Result Cache...
Nächste SlideShare
Wird geladen in …5
×

Ausgewählte Performance Technologien

1.213 Aufrufe

Veröffentlicht am

Diverse In-Memory-Technologien sind bereits seit langer Zeit verfügbar, wie z.B. Result Caches, verschiedene Buffer Caches, Pre-Loading von Objekten etc. Die aktuellste Oracle12c-Version geht jedoch einen großen Schritt weiter. Ohne Änderungen werden SQL-Abfragen um Faktoren beschleunigt; die Grundlage für Real-Time Analysen ist damit gelegt. Wie die einzelnen Techniken funktionieren und mit welchem geríngem Aufwand sie konfiguriert werden, wird erklärt.

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.213
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
11
Aktionen
Geteilt
0
Downloads
14
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Ausgewählte Performance Technologien

  1. 1. Performance Technologien im Überblick Buffer Cache, Result Cache, Column Store und Automatisierung mit ILM Ulrike Schwinn Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | Ulrike Schwinn Business Unit Database Oracle Deutschland B.V. & Co KG http://blogs.oracle.com/dbacommunity_deutsch
  2. 2. Caching Technologien über die Jahre ... • Buffer Cache Erweiterungen über KEEP und RECYCLE Pool für Segmente • Full Database Caching • Pre-Loading von Tabellen und Indizes • Pinnen von PL/SQL Objekten wie Packages, Procedures etc. im Shared Pool Copyright © 2014 Oracle and/or its affiliates. All rights reserved. • Pinnen von PL/SQL Objekten wie Packages, Procedures etc. im Shared Pool • Cachen von Resultaten • Unterstützende Techniken wie Komprimierung, Partitionierung und Automatisierung über ILM • Erweiterung des Cache durch Column Store – optimiertes Spaltenformat im Cache
  3. 3. Database Buffer Default Cache Keep Cache Recycle Cache LRU-Algorithmus TimesTen IMDB TimesTen Application-Tier Database Cache Result Cache Shared Pool oder Client Transparent für Anwendungen In-Memory Techniken der In-Memory Techniken der Middle-Tier Exadata X4 Hybrid Columnar Compression Smart Scan Storage Index Smart Flash Cache (Read/Write) Smart Flash Logging (Redo-Write) Copyright © 2014 Oracle and/or its affiliates. All rights reserved. TimesTen for Exalytics Flash Cache Data Buffer Erweiterung 2nd level Cache Auch für Datafiles Coherence Data Grid Object Cache / Data Grid für verteilte Anwendungen Techniken der Datenbank In-Memory Option 12c Row und Column In-Memory Formate auf der selben Tabelle Simultan und transaktions- konsistent Column: Analytics & Reporting Row : OLTPMemory optimierende Techniken Compression Partitioning Parallelisierung OLAP 3
  4. 4. Database Buffer Default Cache Keep Cache Recycle Cache LRU-Algorithmus TimesTen IMDB TimesTen Application-Tier Database Cache Result Cache Shared Pool oder Client Transparent für Anwendungen In-Memory Techniken der In-Memory Techniken der Middle-Tier Exadata X4 Hybrid Columnar Compression Smart Scan Storage Index Smart Flash Cache (Read/Write) Smart Flash Logging (Redo-Write) Copyright © 2014 Oracle and/or its affiliates. All rights reserved. TimesTen for Exalytics Flash Cache Data Buffer Erweiterung 2nd level Cache Auch für Datafiles Coherence Data Grid Object Cache / Data Grid für verteilte Anwendungen Techniken der Datenbank In-Memory Option 12c Row und Column In-Memory Formate auf der selben Tabelle Simultan und transaktions- konsistent Column: Analytics & Reporting Row : OLTPMemory optimierende Techniken Compression Partitioning Parallelisierung OLAP 4
  5. 5. Standard System Global Area (SGA) Komponenten Buffer Cache Shared Pool Large Pool Copyright © 2014 Oracle and/or its affiliates. All rights reserved. Redo LogFlashback Java Pool Fixed SGA
  6. 6. Der Buffer Cache • Manuelle Konfiguration des (Default) Buffer Cache über Parameter DB_CACHE_SIZE – Nutzung der Standard Blockgröße • Falls SGA_TARGET gesetzt ist, erfolgt automatische Konfiguration – Setzen von DB_CACHE_SIZE entspricht Minimalwert Copyright © 2014 Oracle and/or its affiliates. All rights reserved. – Setzen von DB_CACHE_SIZE entspricht Minimalwert • Buffer Cache mit nicht Standard Blockgröße über Parameter DB_CACHE_nK_SIZE – Voraussetzung für Tablespaces mit Nicht Standard Blockgrößen • Hilfestellung über Memory Advisor
  7. 7. Monitoring der Buffer Cache Nutzung über V$BH SELECT o.object_name, o.object_type, o.owner, COUNT(*) NUMBER_OF_BLOCKS FROM dba_objects o, v$bh bh WHERE o.data_object_id = bh.objd • V$BH listet diejenigen Blöcke mit DATA_OBJECT_ID auf, die im Moment im Buffer Cache sind. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. WHERE o.data_object_id = bh.objd AND o.owner in ('SH') GROUP BY o.object_name, o.owner, o.object_type ORDER BY COUNT(*); OBJECT_NAME OBJECT_TYPE OWNER NUMBER_OF_BLOCKS ------------------------------ --------------- --------------- ---------------- CUSTOMERS TABLE SH 3
  8. 8. Buffer Cache Pools: KEEP und RECYCLE POOLS • Häufig und weniger häufig genutzte Objekte in verschiedenen Pools – Initialisierungsparameter DB_KEEP_CACHE_SIZE und DB_RECYCLE_CACHE_SIZE – Alle Buffer-Pools funktionieren gleich (LRU Algorithmus) • Festlegung der Pools und danach Zuordnung der Objekte Copyright © 2014 Oracle and/or its affiliates. All rights reserved. • Festlegung der Pools und danach Zuordnung der Objekte – Objekte im KEEP-Pool sollen nicht verdrängt werden – Es werden nur soviele Objekte zugewiesen, bis der KEEP Pool voll ist – Alle Segmenttypen unterstützt (LOB, INDEX, ...) – Objekte im Recycle Pool sollen anderen „Hot“ Objekten keine Platz wegnehmen. • Monitoring über V$DB_CACHE_ADVICE
  9. 9. KEEP-Pool: Vorgehensweise 1. Pool-Größe definieren: DB_KEEP_CACHE_SIZE 2. Objekte per Storage-Klausel dem KEEP-Pool zuweisen ALTER TABLE ... STORAGE (buffer_pool keep) ALTER INDEX ... STORAGE (buffer_pool keep) Copyright © 2014 Oracle and/or its affiliates. All rights reserved. 3. Bei Bedarf: "Pre-Load" der Objekte in den KEEP-Pool ALTER TABLE ... MODIFY LOB (lobcol) (STORAGE (buffer_pool keep))
  10. 10. Pre-Loading der Objekte • Auslösen eines Objekt-Scans über die Tabelle, den Index, das Lobsegment • Prinzipiell eine SELECT-Anweisung (u.U mit Hint) SELECT /*+ FULL(T1) */ sum(numeric_column), min(txt_column) FROM tabelle T1; SELECT /*+ FULL(T2) */ dbms_lob.getlength(lob_column) FROM tabelle T2; Copyright © 2014 Oracle and/or its affiliates. All rights reserved. • Achtung: Optimierungen des Buffer Cache beachten! – Parameter _small_table_threshhold setzen (MOS Note: 787373.1) – Beschreibung in DBA Community-Tipp: Pre-Loading von Tabellen in 11g https://apex.oracle.com/pls/apex/GERMAN_COMMUNITIES.SHOW_RESOURCE_BY_FNAME?P_TIPP_ID=362&P_FILE_NAME=index.html ALTER SESSION SET "_small_table_threshold"= 2000; -- wobei Zahl die Blockgröße angibt, die größer als das Segment ist. -- danach kann der FTS ausgeführt werden
  11. 11. Full Database Caching • Ziel: Datenbank komplett in der SGA (Buffer Cache) halten • Neues Feature in 12.1.0.2 • Force Full Caching Mode Die Datenbank lädt alle Objekte in den Buffer Cache und hält sie dort (keine Auslagerung mehr). Auch NOCACHE-Objekte sind betroffen. Copyright © 2014 Oracle and/or its affiliates. All rights reserved. NOCACHE-Objekte sind betroffen. • Information in Dictionary View V$DATABASE SELECT force_full_db_caching FROM V$DATABASE; FORCE_FULL_DB_CACHING ------------------------- NO
  12. 12. Full Database Caching: Vorgehensweise • Sicherstellen, dass der Buffer Cache tatsächlich groß genug ist • Force Full Database Caching aktivieren mit ... ALTER DATABASE MOUNT; ALTER DATABASE FORCE FULL DATABASE CACHING; ALTER DATABASE OPEN; Copyright © 2014 Oracle and/or its affiliates. All rights reserved. • Full DB Caching wird auf Ebene der Container-Datenbank eingestellt – Alle Pluggable Databases betroffen • Objekte werden bei Zugriff (Access) geladen, nicht sofort
  13. 13. Sogar PL/SQL Objekte "In-Memory" • PL/SQL-Objekte werden bei Nutzung in die SGA (Library Cache) geladen – Packages, Procedures, Functions, Type Bodys, Trigger; nicht für Tabellen und Views – Auch hier LRU Algorithmus – Einfluß auf PL/SQL Performance • Möglichkeiten, Empfehlungen, Tipps ... Copyright © 2014 Oracle and/or its affiliates. All rights reserved. • Möglichkeiten, Empfehlungen, Tipps ... – Packages anstelle von einzelnen Procedures und Functions – Library Cache groß genug dimensionieren – Einzelne Objekte/Cursor pinnen mit DBMS_SHARED_POOL.KEEP execute dbms_shared_pool.keep(name=> 'scott.hispackage', flag => 'P'); execute dbms_shared_pool.keep(name=> '4158E358 2329752635', flag=> 'C');
  14. 14. Database Buffer Default Cache Keep Cache Recycle Cache LRU-Algorithmus TimesTen IMDB TimesTen Application-Tier Database Cache Result Cache Shared Pool oder Client Transparent für Anwendungen In-Memory Techniken der In-Memory Techniken der Middle-Tier Exadata X4 Hybrid Columnar Compression Smart Scan Storage Index Smart Flash Cache (Read/Write) Smart Flash Logging (Redo-Write) Copyright © 2014 Oracle and/or its affiliates. All rights reserved. TimesTen for Exalytics Flash Cache Data Buffer Erweiterung 2nd level Cache Auch für Datafiles Coherence Data Grid Object Cache / Data Grid für verteilte Anwendungen Techniken der Datenbank In-Memory Option 12c Row und Column In-Memory Formate auf der selben Tabelle Simultan und transaktions- konsistent Column: Analytics & Reporting Row : OLTPMemory optimierende Techniken Compression Partitioning Parallelisierung OLAP 14
  15. 15. Database Smart Flash Cache ("Flash Cache") • Erweiterung des Datenbank Buffer Caches – SSD ist wie ein Level 2 Cache (SGA ist Level 1) • Schneller als Platte (100x faster for reads) • Günstiger als Memory • Größere Kapazität Flash Cache (Level 2)SGA Memory (Level 1) Copyright © 2014 Oracle and/or its affiliates. All rights reserved. • Weniger Platten Bessere Performance – I/O Durchsatz braucht viele Platten – Flash erhöht den I/O Durchsatz • Verfügbar auf Linux und Solaris Plattformen Disks (NAS/SAN)
  16. 16. Wann nutze ich den Database Flash Cache ...? 1. Datenbank läuft auf Linux oder Solaris 2. Performance-Flaschenhals liegt beim Buffer Cache 3. Top-Wait-Event db_file_sequential_read 4. Freie CPU Ressourcen (gilt eigentlich immer) Copyright © 2014 Oracle and/or its affiliates. All rights reserved. Flash Cache (Level 2)
  17. 17. Nutzung des Database Flash Cache • Init-Parameter einstellen – db_flash_cache_file = {OS-Pfad zur Flash Disk} – db_flash_cache_size = {Größe der Flash Disk} • Strategien zum Pre-Loading von Objekten beachten – Storage Klausel FLASH_CACHE { KEEP | NONE } auf Tabellenebene setzbar Copyright © 2014 Oracle and/or its affiliates. All rights reserved. Storage Klausel FLASH_CACHE { KEEP | NONE } auf Tabellenebene setzbar • Zusätzlicher SGA-Bedarf für Metadaten-Verwaltung – Pro Datenbank-Block 100 Byte; auf RAC-Systemen 200 Byte – Beim Memory-Sizing berücksichtigen • Flash Disks werden von einer Instanz exklusiv genutzt Flash Cache (Level 2)
  18. 18. Database Buffer Default Cache Keep Cache Recycle Cache LRU-Algorithmus TimesTen IMDB TimesTen Application-Tier Database Cache Result Cache Shared Pool oder Client Transparent für Anwendungen In-Memory Techniken der In-Memory Techniken der Middle-Tier Exadata X4 Hybrid Columnar Compression Smart Scan Storage Index Smart Flash Cache (Read/Write) Smart Flash Logging (Redo-Write) Copyright © 2014 Oracle and/or its affiliates. All rights reserved. TimesTen for Exalytics Flash Cache Data Buffer Erweiterung 2nd level Cache Auch für Datafiles Coherence Data Grid Object Cache / Data Grid für verteilte Anwendungen Techniken der Datenbank In-Memory Option 12c Row und Column In-Memory Formate auf der selben Tabelle Simultan und transaktions- konsistent Column: Analytics & Reporting Row : OLTPMemory optimierende Techniken Compression Partitioning Parallelisierung OLAP 18
  19. 19. • Eigener Cache im Shared Pool • Automatischer Refresh bei Daten-Änderungen ! • Einfaches Setup und Monitoring der Cache-Nutzung • Einfache Form des Tunings für Query und PL/SQL Result Caches Copyright © 2014 Oracle and/or its affiliates. All rights reserved. • Einfache Form des Tunings für – SQL-Abfragen – PL/SQL-Funktionen • Gedacht für: – Vorhersehbare Abfragen/sich wiederholende Abfragen – Abfragen mit kleinen Ergebnismengen – Langlaufende Abfragen mit teuren Berechnungen
  20. 20. Query und PL/SQL Result Caches - Konfiguration • Initialisierungsparameter RESULT_CACHE_MAX_RESULT 5 (%) RESULT_CACHE_MAX_SIZE abh. von O/S RESULT_CACHE_MODE MANUAL/FORCE RESULT_CACHE_REMOTE_EXPIRATION 0 (min) Copyright © 2014 Oracle and/or its affiliates. All rights reserved. • Session Parameter RESULT_CACHE_MODE • Einstellung RESULT_CACHE in der Tabellendefinition • Über Hint RESULT_CACHE 0 (min) ALTER TABLE tabelle RESULT_CACHE FORCE; SELECT /*+ RESULT_CACHE*/ * FROM tabelle;
  21. 21. • Informationen über einzelne Statements und ihre Cache- Informationen => Ausführungsplan Monitoring Copyright © 2014 Oracle and/or its affiliates. All rights reserved. • Informationen über den Gesamtcache als Report => dbms_result_cache.memory_report • Informationen über Cache Results und ihren abhängigen Objekten => V$RESULT_CACHE_OBJECTS
  22. 22. Query Result Cache: Ein Beispiel SELECT a.department_id "Department", a.num_emp/b.total_count "%_Employees", a.sal_sum/b.total_sal "%_Salary" FROM ( SELECT department_id, COUNT(*) num_emp, SUM(salary) sal_sum Copyright © 2014 Oracle and/or its affiliates. All rights reserved. SUM(salary) sal_sum FROM employees GROUP BY department_id ) a, ( SELECT COUNT(*) total_count, SUM(salary) total_sal FROM employees ) b ORDER BY a.department_id;
  23. 23. Result Cache: Query Hints Copyright © 2014 Oracle and/or its affiliates. All rights reserved.
  24. 24. Result Cache-Informationen im Ausführungsplan Result Cache Information (identified by operation id): ------------------------------------------------------ 1 - column-count=3; dependencies=(HR.EMPLOYEES); name="SELECT /*+ result_cache */ a.department_id "Department",a.num_emp/b.total_count "%_Employees", a.sal_sum/b.total_sal "%_S" 5 - column-count=2; dependencies=(HR.EMPLOYEES); attributes=(single-row); name="SELECT Copyright © 2014 Oracle and/or its affiliates. All rights reserved. 5 - column-count=2; dependencies=(HR.EMPLOYEES); attributes=(single-row); name="SELECT /*+ result_cache */ COUNT(*) total_count, SUM(salary) total_sal FROM employees" 9 - column-count=3; dependencies=(HR.EMPLOYEES); name="SELECT /*+ result_cache */ department_id, COUNT(*) num_emp, SUM(salary) sal_sum FROM employees
  25. 25. Result Cache-Informationen in den Statistiken Statistiken ---------------------------------------------------------- 0 recursive calls 0 db block gets 0 consistent gets 0 physical reads 0 redo size 1304 bytes sent via SQL*Net to client Copyright © 2014 Oracle and/or its affiliates. All rights reserved. 1304 bytes sent via SQL*Net to client 491 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 14 rows processed
  26. 26. Monitoring des Result Cache SQL> set serveroutput on SQL> execute dbms_result_cache.memory_report() R e s u l t C a c h e M e m o r y R e p o r t [Parameters] Block Size = 1K bytes Maximum Cache Size = 6M bytes (6K blocks) Maximum Result Size = 307K bytes (307 blocks) [Memory] Copyright © 2014 Oracle and/or its affiliates. All rights reserved. [Memory] Total Memory = 151840 bytes [0.022% of the Shared Pool] ... Fixed Memory = 5296 bytes [0.001% of the Shared Pool] ... Dynamic Memory = 146544 bytes [0.021% of the Shared Pool] ....... Overhead = 113776 bytes ....... Cache Memory = 32K bytes (32 blocks) ........... Unused Memory = 27 blocks ........... Used Memory = 5 blocks ............... Dependencies = 1 blocks (1 count) ............... Results = 4 blocks ................... SQL = 4 blocks (3 count)
  27. 27. PL/SQL Result Cache • Result Cache für PL/SQL Function Results – Aktiv, wenn PL/SQL-Funktionen von PL/SQL aus aufgerufen werden CREATE OR REPLACE FUNCTION get_datum ( p_id NUMBER, p_format VARCHAR2 ) RETURN VARCHAR2 RESULT_CACHE Copyright © 2014 Oracle and/or its affiliates. All rights reserved. http://www.oracle.com/global/de/community/tipps/resultcache/index.html RESULT_CACHE IS v_datum DATE; BEGIN select hiredate into v_datum from emp where empno = p_id; RETURN TO_CHAR(v_datum, p_format); END;
  28. 28. Database Buffer Default Cache Keep Cache Recycle Cache LRU-Algorithmus TimesTen IMDB TimesTen Application-Tier Database Cache Result Cache Shared Pool oder Client Transparent für Anwendungen In-Memory Techniken der In-Memory Techniken der Middle-Tier Exadata X4 Hybrid Columnar Compression Smart Scan Storage Index Smart Flash Cache (Read/Write) Smart Flash Logging (Redo-Write) Copyright © 2014 Oracle and/or its affiliates. All rights reserved. TimesTen for Exalytics Flash Cache Data Buffer Erweiterung 2nd level Cache Auch für Datafiles Coherence Data Grid Object Cache / Data Grid für verteilte Anwendungen Techniken der Datenbank In-Memory Option 12c Row und Column In-Memory Formate auf der selben Tabelle Simultan und transaktions- konsistent Column: Analytics & Reporting Row : OLTPMemory optimierende Techniken Compression Partitioning Parallelisierung OLAP 28
  29. 29. Neue SGA Komponente: In-Memory Area Buffer Cache Shared Pool Large Pool Copyright © 2014 Oracle and/or its affiliates. All rights reserved. In-Memory Area Redo LogFlashback Java Pool Fixed SGA
  30. 30. In-Memory Column Store – Kurzbeschreibung • Reines In-Memory Format • Nutzung unterschiedlicher Komprimierungsarten (2x bis 20x) • Einschaltbar auf Objektebene Pure In-Memory Columnar Copyright © 2014 Oracle and/or its affiliates. All rights reserved. • Einschaltbar auf Objektebene • Verfügbar auf allen Plattformen • Voraussetzungen – Datenbank Release 12.1.0.2 – Manuelle Aktivierung – Gebunden an In-Memory Option SALES
  31. 31. • Der Column Store ist statisch und folgt keinem LRU (Least Recently Used) Algorithmus • Der Column Store ist ein reines Memory Format • Der Column Store ist geeignet für einheitliche Zugriffe (alle Zeilen einer Tabelle) => typisch für analytische Abfragen Prinzipielle Unterschiede zum (traditionellen) Buffer Cache Copyright © 2014 Oracle and/or its affiliates. All rights reserved. Tabelle) => typisch für analytische Abfragen • Der Buffer Cache hingegen ist vorgesehen für nicht einheitliche Zugriffe (z.B. einige Zeilen einer Tabelle) => typisch für OLTP • Der Column Store ist mit zusätzlichen neuen Optimizerzugriffen und Komprimierungsalgorithmen ausgestattet
  32. 32. • Beides - Row und Column In-Memory Formate - für die gleiche Tabelle • Real Time Analysen nutzen das neue Column Format Memory Memory SALES SALES Das duale Format in der Datenbank Copyright © 2014 Oracle and/or its affiliates. All rights reserved. das neue Column Format • OLTP Applikationen nutzen das Row Format • Erhalt der Transaktionskonsistenz SALES SALES Row Format Column Format
  33. 33. 1. Memory Allokation in der SGA über neuen Initialisierungsparameter und danach Start der Datenbank – Setzen von INMEMORY_SIZE Parameter (mindestens 100 MB); DEFAULT 2. Auswahl der Objekte (Spalten, Tabellen, Materialized Views, Tablespace oder Partitionen) und Belegung mit den entsprechenden Konfiguration in 2 Schritten Copyright © 2014 Oracle and/or its affiliates. All rights reserved. Tablespace oder Partitionen) und Belegung mit den entsprechenden Eigenschaften (Komprimierung/Priorität) – Über CREATE oder ALTER Kommando Hinweise: - u.U. überflüssige analytische Indizes löschen! - Nicht alle Objekte müssen im Column Store vorliegen! CREATE TABLE customers … PARTITION BY LIST (PARTITION p1 … INMEMORY, (PARTITION p2 … NO INMEMORY);
  34. 34. Monitoring von In-Memory Scans im Ausführungsplan • Beispiel: Schlüsselwort INMEMORY FULL SQL> select * from table(dbms_xplan.display_cursor(format=>'BASIC')); PLAN_TABLE_OUTPUT -------------------------------------------------------------------------- EXPLAINED SQL STATEMENT: ------------------------ Copyright © 2014 Oracle and/or its affiliates. All rights reserved. Public ------------------------ select count(*) from customers_mem where cust_gender='F' Plan hash value: 1973973873 ----------------------------------------------------- | Id | Operation | Name | ----------------------------------------------------- | 0 | SELECT STATEMENT | | | 1 | SORT AGGREGATE | | | 2 | TABLE ACCESS INMEMORY FULL| CUSTOMERS_MEM | -----------------------------------------------------
  35. 35. Verwendung • Kostenintensive Abfragen, die aus Table Scans resultieren, identifizieren (Anwender, AWR, statspack, Advisor) • Einige Beispiele für Abfragen, die vom In-Memory Column Store profitieren – Scannen von vielen Zeilen und Anwendung von Filtern wie z.B. =, <, >, und IN etc. – Abfragen einer Teilmenge von Spalten einer Tabelle (5 von 100 Spalten) Copyright © 2014 Oracle and/or its affiliates. All rights reserved. – Abfragen einer Teilmenge von Spalten einer Tabelle (5 von 100 Spalten) – Joins von kleinen Tabellen mit einer großen Tabelle, wobei die Filter viele Zeilen herausfiltern – Abfragen die Operationen verwenden wie min, max und sum, group by, distinct and count(distinct()) • Unbedingt auch weitere Tuning Techniken mitberücksichtigen – Statistikmanagement, Plan Baseline, Result Cache etc. . Public
  36. 36. Database Buffer Default Cache Keep Cache Recycle Cache LRU-Algorithmus TimesTen IMDB TimesTen Application-Tier Database Cache Result Cache Shared Pool oder Client Transparent für Anwendungen In-Memory Techniken der In-Memory Techniken der Middle-Tier Exadata X4 Hybrid Columnar Compression Smart Scan Storage Index Smart Flash Cache (Read/Write) Smart Flash Logging (Redo-Write) Copyright © 2014 Oracle and/or its affiliates. All rights reserved. TimesTen for Exalytics Flash Cache Data Buffer Erweiterung 2nd level Cache Auch für Datafiles Coherence Data Grid Object Cache / Data Grid für verteilte Anwendungen Techniken der Datenbank In-Memory Option 12c Row und Column In-Memory Formate auf der selben Tabelle Simultan und transaktions- konsistent Column: Analytics & Reporting Row : OLTPMemory optimierende Techniken Compression Partitioning Parallelisierung OLAP 36
  37. 37. Partitionierung und mehr ... • Tabellen partitionieren – "Heiße" Daten in einer Partition In Memory – "Normale" in weiteren Partitionen Standard-Storage – "Ältere" Daten komprimieren Archive Storage in Kombination mit verschiedenen Komprimierungsalgorithmen Mai 2014 Apr 2014 Mär 2014 Copyright © 2014 Oracle and/or its affiliates. All rights reserved. in Kombination mit verschiedenen Komprimierungsalgorithmen • Partitionen In Memory – Buffer Cache Strategien (KEEP, RECYCLE) – In Memory Database (neu ab 12c) • Voraussetzung – Partitioning Option Feb 2014 Jan 2014 Dez 2013
  38. 38. • ILM Integration in den Datenbank Kern selbst durch neue Features wie (*) – Heat Map – Automatic Data Placement /Optimization – Database Archiving Automatisierung in 12c über ILM Copyright © 2014 Oracle and/or its affiliates. All rights reserved. – Database Archiving • Voraussetzung: Advanced Compression Option
  39. 39. Das Konzept: Heat Map Tracking • Eine Heat Map liefert Zugriffsinformationen auf die Daten • Ebenen Segment: Welche Tabellen/Partitionen werden wie Active Frequent HOT Copyright © 2014 Oracle and/or its affiliates. All rights reserved. – Segment: Welche Tabellen/Partitionen werden wie verwendet? – Block: Welche Blöcke wurden wann verändert? • Umfassend – Überwacht Reads ,Writes, Index und Full Table Scans – Ausschluss der Operationen Statistics Gathering, DDLs usw. • Performant Frequent Access Occasional Access Dormant COLD
  40. 40. Heat Map im Enterprise Manager Copyright © 2014 Oracle and/or its affiliates. All rights reserved.
  41. 41. Automatische Datenoptimierungen • Vor: Aktivierung der Heat Map • Umfassen folgende Aktionen – Komprimieren von Daten Bewegen von Daten (auch Storage Tiering ) Less Active Active Historical Copyright © 2014 Oracle and/or its affiliates. All rights reserved. – Bewegen von Daten (auch Storage Tiering ) • Komprimieren in Abhängigkeit von Bedingungen wie – Zeit nach Erzeugung (CREATION), Zugriffsverhalten (ACCESS), Änderung an Daten (MODIFICATION) oder eigene Bedingung • Implementierung über Policies mit CREATE/ALTER Befehlen • Lizenzierung: EE mit Advanced Compression Option
  42. 42. Automatische Segment Komprimierung • Für Tabellen (Vererbung auf Partitionen) ALTER TABLE sh.sales ILM ADD POLICY row store compress advanced SEGMENT ORDERS Copyright © 2014 Oracle and/or its affiliates. All rights reserved. • Für einzelne Partitionen row store compress advanced SEGMENT AFTER 1 DAY OF NO MODIFICATION; ALTER TABLE sh.sales MODIFY PARTITION sales_q4_2000 ILM ADD POLICY row store compress advanced SEGMENT AFTER 1 DAY OF NO MODIFICATION;
  43. 43. Automatische Verlagerung (Storage Tiering) SOURCE Tablespace TARGET Tablespace SOURCE Tablespace T1 Zugriff letzte Woche T2 Zugriff heute MOVE 55% T1 60% 55% Copyright © 2014 Oracle and/or its affiliates. All rights reserved. T3 Zugriff gestern T2 Zugriff heute55% T3 T2 T1 55% SELECT * FROM dba_ilmparameters; NAME VALUE ------------------------------ ---------- TBS PERCENT USED 55 TBS PERCENT FREE 45 ...
  44. 44. Automatische Verlagerung am Beispiel Policy anlegen ALTER TABLE scott.employee ILM ADD POLICY TIER TO low_cost_store; ORDERS Copyright © 2014 Oracle and/or its affiliates. All rights reserved. • Tablespace Threshold setzen/prüfen TIER TO low_cost_store; dbms_ilm_admin.customize_ilm(dbms_ilm_admin.tbs_percent_used,85); dbms_ilm_admin.customize_ilm(dbms_ilm_admin.tbs_percent_free,25); SELECT * FROM dba_ilmparameters;
  45. 45. Zusammenfassung Daten Klassifikation Automatisches Durchführen Bereiche(Scope) Aktionen Automatische Erkennung Bedingungen • Welche Operationen? WHAT IF and WHEN Then AUTOMATICALLY do Copyright © 2014 Oracle and/or its affiliates. All rights reserved. • Tablespace • Segment • Row/Block Voraussetzung: Heat Map • Komprimieren • Verlagern nach Storage Tier • Beides • Welche Operationen? – Erzeugen – Keine Daten- Änderung – Kein Daten-Zugriff – Business Regel • Wann? – Nach 3 Tagen – Nach 1 Monat – Falls Tablespace voll
  46. 46. Database Buffer Default Cache Keep Cache Recycle Cache LRU-Algorithmus TimesTen IMDB TimesTen Application-Tier Database Cache Result Cache Shared Pool oder Client Transparent für Anwendungen In-Memory Techniken der In-Memory Techniken der Middle-Tier Exadata X4 Hybrid Columnar Compression Smart Scan Storage Index Smart Flash Cache (Read/Write) Smart Flash Logging (Redo-Write) Copyright © 2014 Oracle and/or its affiliates. All rights reserved. TimesTen for Exalytics Flash Cache Data Buffer Erweiterung 2nd level Cache Auch für Datafiles Coherence Data Grid Object Cache / Data Grid für verteilte Anwendungen Techniken der Datenbank In-Memory Option 12c Row und Column In-Memory Formate auf der selben Tabelle Simultan und transaktions- konsistent Column: Analytics & Reporting Row : OLTPMemory optimierende Techniken Compression Partitioning Parallelisierung OLAP 46
  47. 47. Fazit • In-Memory Technologien und Caches der Oracle-Datenbank – Buffer Cache: KEEP und RECYCLE, Flash Cache, Result Cache, Column Store • Mehrwert liegt in der Kombination der Technologien – Aggregate auf normale, relationale Tabellen: In Memory DB – LOBs, JSON, XML, Geodaten: Buffer Cache KEEP Pool Copyright © 2014 Oracle and/or its affiliates. All rights reserved. – LOBs, JSON, XML, Geodaten: Buffer Cache KEEP Pool – Query Result Cache • Unbedingt auch weitere Tuning Techniken mitberücksichtigen – Statistikmanagement, Plan Baseline, Result Cache etc. Alles mit minimalem Einfluß auf die Applikation!

×