Die Datenbank-Spezialisten.
Begriffe, Modellierung und reale Probleme mit der Oracle InMemory-Technologie
Zeilen- vs. spaltenorientierte Datenhaltung im Hauptspeicher
Frank Effenberger, Dresden – 28.10.2015
Die Datenbank-Spezialisten.
Zahlen und FaktenRobotron Datenbank-Software GmbH
Gründungsjahr 1990
Geschäftsform GmbH (9 Gesellschafter)
Mitarbeiterzahl 349 (Stand 01/2015)
Stammkapital 2,4 Mio. EUR
Umsatz 2013 31,1 Mio. EUR
Umsatz 2014 31,2 Mio. EUR
Oracle-Partner
ISO 9001 zertifiziert
Hauptsitz
Schulungs- und Kongresszentrum
Die Datenbank-Spezialisten.
Robotron-Firmengruppe
Tschechien: Robotron Database Solutions s.r.o.
Schweiz: Robotron Schweiz GmbH
Österreich: Robotron Austria GmbH
Russland: Robotron Rus GmbH
Deutschland: Robotron|ECG solutions GmbH
Deutschland: SASKIA® Informations-Systeme GmbH
Die Datenbank-Spezialisten.
0. Gliederung
1. Einführung und Überblick
2. Oracle InMemory-Technologie und SQL-Befehle
3. Oracle InMemory für das DWH
4. Technische Rahmenbedingungen
5. Fazit
6. Quellen
Die Datenbank-Spezialisten.
1. Einführung und Überblick
Motivation:
DWHs sind read mostly (ohne Betrachtung ETL-Prozess)
Abfragen über mehrere Millionen Datensätze mit hoher Datendichte (wenige Null-Werte) => hohe Abfrage- und Antwortzeiten bei komplexen Analysen
Ablehnung gegenüber langsamen Produkten, Konkurrenten mit höherer Effizienz werden bevorzugt
Idee der spaltenorientierten Abfragen im Hauptspeicher
Die Datenbank-Spezialisten.
1. Einführung und Überblick
– Speicherchip im Prozessor -> Nachdenken
– Hauptspeicher -> Im Bücherregal eine Informationsuchen
– Festplatte -> Mit dem Auto in die nächste Büchereifahren, Information suchen undzurückfahren
Schnelligkeit des Hauptspeichers anhand eines Beispiels:
Quelle Erzählung: Erzählung Prof. Gräfe zur Studienzeit
Die Datenbank-Spezialisten.
1. Einführung und Überblick
Aufbau einer Speicherhierarchie, wobei:
– Abfragen über oft abgerufene, große Datenmengen im Hauptspeicher durchgeführt werden (‚Wegfall‘ des I/O, aber Erhöhung CPU-Last)
– Abfragen über seltener abgerufene Datenmengen auf der Festplatte durchgeführt werden
Langfristiges Ziel zur Steuerung der Abfragezeiten:
Die Datenbank-Spezialisten.
1. Einführung und Überblick
Nutzung von Hauptspeichertechnologien(zeilen- und spaltenorientiert)
Bedeutung der Oracle InMemory Option:
Spaltenorientierte Speicherung im Hauptspeicher
Cache (zeilenorientierte Speicherung) gibt es schon seit langer Zeit beiOracle und ist nicht neu!
Bedeutung von InMemory im eigentlichem Sinne:
Die Datenbank-Spezialisten.
1. Einführung und Überblick
Oracle Database InMemory Option:
Datenbankobjekte wahlweise (!) im Hauptspeicher
Reservierung von Hauptspeicher in SGA für InMemory
Keine Änderung in der Anwendung nötig (auf den ersten Blick)
Spaltenorientiert
Komprimiert (2-20fach)
Parallelisierung
Nutzung bestehender DB-Architektur und Funktionalität
Quelle Aufzählung: TiF Seminar, Oracle München, 2015
Die Datenbank-Spezialisten.
Technologische Konzepte des Vortrags
Cache InMemory Compression
SIMD Bloomfilter
Die Datenbank-Spezialisten.
1. Einführung und Überblick
Oracle Database InMemory Option:
Schlüsselwörter:
InMemorySpaltenorientiert
Cache = Zeilenorientiert
Quelle Abbildung: TiF Seminar, Oracle München, 2015
Die Datenbank-Spezialisten.
Technologische Konzepte des Vortrags
Cache InMemory Compression
SIMD Bloomfilter
Die Datenbank-Spezialisten.
1. Einführung und Überblick
Erklärung zu Cache:
Cache lässt z. B. eine Tabelle ständig als ‚most recently used‘(MRU) für das ‚last recently used‘ (LRU) gelten
MRU
LRU
Daten im Cache
Die Datenbank-Spezialisten.
Technologische Konzepte des Vortrags
Cache InMemory Compression
SIMD Bloomfilter
Die Datenbank-Spezialisten.
2. Oracle InMemory-Technologie und SQL-Befehle
Erklärung zu InMemory (Voraussetzungen):
Parameter INMEMORY_SIZE in z.B. Init.ora gesetzt:
show parameter inmemory_size;
Eigene SGA neben Cache für In-Memory mit SGA_Target Parameter gesetzt (Init.ora):
select * from V$SGA; (In-Memory Area muss zugewiesen sein)
ALTER SESSION|SYSTEM set inmemory_query = enable; (disable)
ALTER TABLE fact_table inmemory; (no inmemory)
ALTER TABLE dimension_table cache; (nocache)
Kein Migrationsprojekt (wenn man 12c hat)
Die Datenbank-Spezialisten.
Nach einem „ALTER TABLE X inmemory;“ muss ein Select auf die Tabelle ausgeführt werden, ehe sie in den Hauptspeicher geladen wird (oder Priority auf Critical setzen, dann laden bei Öffnung der DB)
Bei Abfragen entscheidet der SQL-Optimizer je nach Größe der Tabelle und Wiederholerwerten, ob IN-Memory oder normal auf der Datenbank abgefragt wird
Wenn Parallelisierung möglich, tut dies der SQL-Optimizerautomatisch (ggf. Parameter aktivieren)
2. Oracle InMemory-Technologie und SQL-Befehle
Voraussetzungen:
Die Datenbank-Spezialisten.
Technologische Konzepte des Vortrags
Cache InMemory Compression
SIMD Bloomfilter
Die Datenbank-Spezialisten.
2. Oracle InMemory-Technologie und SQL-Befehle
Zeilenorientiert:
– 01, Alice , Golf; 02, Bob , Jacht; 03, Mallory, Jacht;
Spaltenorientiert mit Komprimierung (Spalten-ID):
– 01, 02, 03; Alice, Bob, Mallory; Golf, Jacht:002,003;
Komprimierung (vereinfacht):
Die Datenbank-Spezialisten.
2. Oracle InMemory-Technologie und SQL-Befehle
Komprimierung:
Komprimierung allgemein (auch partitionsweise, da extra Partitionierungslizenz nötig)
In spaltenorientierten Systemen viele Wiederholer (Komprimierung 4-20fach möglich)
Create Table fact_table (
column1 number,
column2 varchar(2),
column3 number) INMEMORY [PRIORITY CRITICAL]MEMCOMPRESS FOR DML(column2);
Die Datenbank-Spezialisten.
2. Oracle InMemory-Technologie und SQL-Befehle
InMemory kann bereits komprimierte Werte ohne Dekompression untereinander vergleichen (Komprimierung benötigt keine Advanced-Compression-Option!)
Spaltenorientierte, komprimierte Werte können auch parallelisiert werden und mithilfe von Buckets (Max/Min-Werte) noch performanter gemacht werden
Es ist möglich, nur ausgewählte Spalten in den Hauptspeicher zu laden und den Rest bei Bedarf nachzuladen
Zusätzliche Performancesteigerung:
Die Datenbank-Spezialisten.
Technologische Konzepte des Vortrags
Cache InMemory Compression
SIMD Bloomfilter
Die Datenbank-Spezialisten.
2. Oracle InMemory-Technologie und SQL-Befehle
SIMD*: Parallele CPU-Verarbeitung von Where-Bedingungen
Quelle Abbildung: Oracle White Paper: Oracle Database In-Memory, S. 11. (Oktober 2014)
* = Single Instruction processing Multiple Data values
Die Datenbank-Spezialisten.
Technologische Konzepte des Vortrags
Cache InMemory Compression
SIMD Bloomfilter
Die Datenbank-Spezialisten.
2. Oracle InMemory-Technologie und SQL-Befehle
Bloom-Filter (Anwendung bei InMemory-Hash-Joins):
Quelle Abbildung: Oracle White Paper: Oracle Database In-Memory, S. 11. (Oktober 2014)
ID V
1 A
2 B
3 C
Tabelle 1 Tabelle 2Bisheriges Vorgehen
FK ID V
1 1 C
2 2 A
3 3 B
2 4 A
2 5 C
1 6 D
77 7 F
- 8 G
- 9 H
(…) (…) (…)
Die Datenbank-Spezialisten.
2. Oracle InMemory-Technologie und SQL-Befehle
Bloom-Filter (Anwendung bei InMemory-Hash-Joins):
Anmerkung: V = Value. Die Hashtabellen sind vereinfacht dargestellt.
ID V
1 A
2 B
3 C
Tabelle 1
Hash V
97 1,A
98 2,B
99 3,C
FK ID V
1 1 C
2 2 A
3 3 B
2 4 A
2 5 C
1 6 D
77 7 F
- 8 G
- 9 H
(…) (…) (…)
Tabelle 2
Hash (ID)
Bisheriges Vorgehen
Die Datenbank-Spezialisten.
2. Oracle InMemory-Technologie und SQL-Befehle
Bloom-Filter (Anwendung bei InMemory-Hash-Joins):
Anmerkung: V = Value. Die Hashtabellen sind vereinfacht dargestellt.
ID V
1 A
2 B
3 C
FK ID V
1 1 C
2 2 A
3 3 B
2 4 A
2 5 C
1 6 D
77 7 F
- 8 G
- 9 H
(…) (…) (…)
Tabelle 1 Tabelle 2
Hash V
97 1,A
98 2,B
99 3,C
Hash (ID)
Hash (FK)Hash (FK)
Bisheriges Vorgehen
Die Datenbank-Spezialisten.
2. Oracle InMemory-Technologie und SQL-Befehle
Bloom-Filter (Anwendung bei InMemory-Hash-Joins):
Anmerkung: V = Value. Die Hashtabellen sind vereinfacht dargestellt.
ID V
1 A
2 B
3 C
FK ID V
1 1 C
2 2 A
3 3 B
2 4 A
2 5 C
1 6 D
77 7 F
- 8 G
- 9 H
(…) (…) (…)
Tabelle 1 Tabelle 2
Hash V
97 1,A
98 2,B
99 3,C
Hash (ID)
Neues Vorgehen
Hash V
97 1,1,A
98 2,2,B
99 3,3,C
98 2,4,A
98 2,5,C
97 1,6,D
135 3,7,F
- 3,8,G
- 3,9,H
(…) (…)
Bit-vektor
0
1
1
0
0
0
1
1
Die Datenbank-Spezialisten.
2. Oracle InMemory-Technologie und SQL-Befehle
Bloom-Filter (Anwendung bei InMemory-Hash-Joins):
Anmerkung: V = Value. Die Hashtabellen sind vereinfacht dargestellt.
ID V
1 A
2 B
3 C
FK ID V
1 1 C
2 2 A
3 3 B
2 4 A
2 5 C
1 6 D
77 7 F
- 8 G
- 9 H
(…) (…) (…)
Tabelle 1 Tabelle 2
Hash V
97 1,A
98 2,B
99 3,C
Hash (ID)
Neues Vorgehen
Hash V
97 1,1,A
98 2,2,B
99 3,3,C
98 2,4,A
98 2,5,C
97 1,6,D
135 3,7,F
- 3,8,G
- 3,9,H
(…) (…)
Bit-vektor
0
1
1
0
0
0
1
1
Die Datenbank-Spezialisten.
2. Oracle InMemory-Technologie und SQL-Befehle
Bloom-Filter (Anwendung bei InMemory-Hash-Joins):
Hashtabelle 1
Hash V
97 1,1,A
98 2,2,B
99 3,3,C
98 2,4,A
98 2,5,C
97 1,6,D
135 3,7,F
- 3,8,G
- 3,9,H
(…) (…)
SIMD
Hashtabelle 2
Hash V
97 1,1,A
98 2,2,B
99 3,3,C
98 2,4,A
98 2,5,C
97 1,6,D
Hash V
97 1,A
98 2,B
99 3,C
Quelle Abbildung: Oracle White Paper: Oracle Database In-Memory, S. 11. (Oktober 2014)
Bit-vektor
0
1
1
0
0
0
1
1
Gefilterte Hashtabelle 2
Die Datenbank-Spezialisten.
3. Oracle InMemory für das DWH
Für die Oracle Database InMemory Option, ebenso wie für die Erhöhung des Caches wird RAM benötigt und muss gekauft werden. Unabhängig von diesen notwendigen Ausgaben stellt sich folgende Frage:
Lohnt es sich, zusätzliches Geld für die InMemory-Option auszugeben oder sollte der bereits vorhandene Cache weitergenutzt werden?
Die Datenbank-Spezialisten.
3. Oracle InMemory für das DWH
Nutzung im DWH:
Vermutung: Spaltenorientierung ist im OLAP sinnvoll und erhöht die Performance.
– Dimensionstabellen lohnen sich wegen den Wiederholerwerten und Virtualisierung (Materialized View) spaltenorientiert zu speichern?
– Faktentabellen lohnen sich in der spaltenorientierten Speicherung, wenn nur wenige Spalten abgefragt werden?
Praxis: Kann man das wirklich so pauschal sagen?
– Test der Fragestellung anhand vom mehreren Testfällen
– spannende Ergebnisse
Die Datenbank-Spezialisten.
3. Oracle InMemory für das DWH
Erkenntnisse aus den Tests:
Ziel ist eine Sensibilisierung: Nicht jede Query im DWH wird automatisch durch In-Memory schneller. Nicht nur Abfragen auf ‚viele Spalten‘ bremsen Performance, sondern:
– Anzahl der Joins und damit beteiligte Tabellen
– Art der Where-Bedingung
– Art der DML (Select, Insert, Update, …)
Die Datenbank-Spezialisten.
3. Oracle InMemory für das DWH
Erkenntnisse aus den Tests:
Manchmal ist Cache genauso gut wie ‚InMemory‘:
Abfrage 1:SELECT sum(STUNDEN_STZ_KST), sum(STUNDEN_STZ_PROJEKT), sum(STUNDEN_BUDGET_KST)
FROM FAKT_KFP;
Abfrage 2:SELECT sum(STUNDEN_STZ_KST), sum(STUNDEN_STZ_PROJEKT), sum(STUNDEN_BUDGET_KST)
FROM FAKT_KFP, DIM_PROJEKTE, DIM_MITARBEITER
WHERE DIM_PROJEKTE.Projektname = :p_projektname
AND DIM_MITARBEITER.Mitarbeitername= :p_mitarbeitername
AND DIM_PROJEKTE.Projekt_ID = FAKT_KFP.Projekt_ID
AND DIM_MITARBEITER.Mitarbeiternummer = FAKT_KFP.Mitarbeiternummer
(Abfrage aus Datenschutzgründen parametrisiert)
Die Datenbank-Spezialisten.
3. Oracle InMemory für das DWH
Erkenntnisse aus den Tests (Extrembeispiel):
Zeitfaktor = Dauer gecachte Abfrage / Dauer InMemory-Abfrage
13,28
1,07
0
2
4
6
8
10
12
14
Abfrage 1, keine joins Abfrage 2, spezifische joins
Zeitfaktor
Abfrage 1, keine joins Abfrage 2, spezifische joins
Anmerkung: Ergebnisse sind arithmetische Mittel mehrerer Kontrollabfragen, um ggf. andere parallel laufende Prozesse auszuschließen.
Die Datenbank-Spezialisten.
3. Oracle InMemory für das DWH
Erkenntnisse aus den Tests:
Abfragen des BI-Servers meist komplex (bei lange dauernden, zu optimierenden Anfragen)
Oft werden spaltenorientierte Systeme gezwungen, zeilenorientiert zu arbeiten und kein Performancegewinn durch InMemory
Bei OBIEE Hoffnung auf 12c-Version
Für OLTP-Systeme und dem bisherigen ETL-Prozess ist InMemorynicht geeignet
SQL-Review und Code-Review nötig, um optimale Nutzung für In-Memory zu garantieren!
Die Datenbank-Spezialisten.
3. Oracle InMemory für das DWH
Erkenntnisse aus den Tests:
InMemory bringt bei DWH-Abfragen mit großen Datenmengen und FULL Table Scans Performancegewinne, I/O sollte aber das einzige Bottleneck sein!
Deutliche Reduzierung der physical und logical (!) reads aufgrund der spaltenorientierten Abbildung im Speicher
Statistiken
-----------------------------------------------------
335678 consistent gets (NO INMEMORY)
34321 physical reads (NO INMEMORY)
…
252 consistent gets (INMEMORY)
0 physical reads (INMEMORY)
…
4430634 rows processed
Die Datenbank-Spezialisten.
4. Techn. Rahmenbedingungen
Die Tests wurden unter folgenden Rahmenbedingungen durchgeführt:
Testsystem 1 (kleines System):
– Oracle Release: 12.1.0.2
– DB-Host: rdslinux40 mit 2 GB RAM (nur für InMemory)
Testsystem 2 (großes System):
– Oracle Release: 12.1.0.2
– DB-Host: rdslinux17 mit 64 GB RAM (nur für InMemory)
Anmerkung: Es wurde keine Partitionierung verwendet.
Die Datenbank-Spezialisten.
5. Fazit
Es wurde festgestellt, dass:
InMemory nur in bestimmten Situationen Performancegewinne bringt (lesende Abfragen, Joins, Where-Bedingungen, gekoppelte Programme)
Das Bottleneck auf die CPU verschoben wird
Die von Oracle angebotenen BI-Tools Optimierungsbedarf haben
Die Alternative ‚Cache‘ sinnvoll sein kann
Deswegen:
Vorher SQL- und Codereviews durchführen und Optimierungspotentiale abschätzen
Verhältnis von Kosten und Nutzen untersuchen
Die Datenbank-Spezialisten.
5. Fazit
Soll ich den Hauptspeicher zeilen- oder spaltenorientiert nutzen?
Mit dem Hauptspeicher ist man immer schneller als im Vergleich zur Festplatte. Die eigentliche Frage / Diskussion sollte sein:
Die Datenbank-Spezialisten.
Fragen?
M.Sc. Frank EffenbergerSystemberater Business Analytics
externer Doktorand TU Dresden,Business Intelligence Research
Telefon: 0351 [email protected]
www.robotron.de
Die Datenbank-Spezialisten.
[6. Quellen]
Literatur:
[AbMH08 S. 5ff] Abadi; Madden; Hachem, (2008). Column-Stores vs.
Row-Stores: How Different Are They Really?
[DOAG15 S. 16ff] Pokolm, Jens-Christian, (2015). Datenbank-Konsolidierung mit Multitenant und In Memory. DOAG SOUG News, Konsolidierung räumt die IT auf.Erste Ausgabe Februar 2015.
[Orac14 S. 7] Oracle White Paper: Oracle Database In-Memory . (Oktober 2014). Von http://www.oracle.com/technetwork/database/in-memory/overview/twp-oracle-database-in-memory-2245633.html abgerufen
Kursmaterial aus TiF-Seminar, Oracle München (Schlaucher), 2014. Folie 251,252:
http://oracledwh.de/downloads/AutoIndex-2.2.4/index.php?dir=downloads/01_DWH_Seminare_Kurs_Materialien_Folien_und_Skripte/01_01_DWH%20Technik%20im%20Fokus%20Reihe_TIF/
Bilder:
http://us.123rf.com/450wm/brostock/brostock1301/brostock130100011/17533122-cpu-processor-chip-on-white-isolated.jpg
http://images.gutefrage.net/media/fragen/bilder/was-sieht-man-denn-alles-auf-einem-ram-riegel/0_big.jpg
http://upload.wikimedia.org/wikipedia/commons/7/75/Samsung_HD753LJ_03-Opened.jpg
https://images.otto.de/asset/mmo/formatz/helit-papierkorb-silber-8114573.jpg