Oracle Database In-Memory Option

Oracle Database In-Memory ist in aller Munde. Erste-Hand-Informationen finden Sie im In-Memory Whitepaper, in der Oracle Dokumentation und im Product Management Blog. In diesem Beitrag werden einige häufig gestellte Fragen beantwortet.

1. Ist Oracle Database In-Memory eine neue Datenbank?
Nein. Die Oracle Database In-Memory Option ist eine Erweiterung der Oracle Datenbank (DB), verfügbar in der Enterprise Edition ab Version 12.1.0.2. Sie ist kompatibel mit allen Features der Oracle DB wie RAC, Data Guard, Advanced Security u.a.

2. Basiert die Oracle DB In-Memory Option auf TimesTen?
Nein. Oracle DB In-Memory ist eine komplett neue DB-Technologie. (TimesTen bleibt als eigenständige Datenbank sowie als Cache für die Oracle Datenbank – unter dem neuen Produktnamen „Oracle TimesTen Application-Tier Database Cache“ – weiterhin erhalten)

3. Wofür brauche ich die Oracle DB In-Memory Option?
Für Hochgeschwindigkeitsabfragen, um Auswertungen im analytischen oder im transaktionalen Umfeld zu beschleunigen.

4. Brauche ich neue Hardware für die Oracle DB In-Memory Option?
Nein. Die Oracle DB In-Memory Option kann auf jeder Hardwareplattform betrieben werden, auf der die Oracle DB 12.1.0.2 (und höher) zertifiziert ist.

5. Wie wird die Oracle DB In-Memory Option installiert?
Bei der Installation der Oracle DB 12.1.0.2 (und höher) wird die Oracle DB In-Memory Option automatisch installiert. Es ist keine zusätzliche Installation erforderlich.

6. Wie aktiviere ich die Oracle DB In-Memory Option für meine Datenbank?
Nach der Installation der Oracle Datenbank ist die In-Memory Option inaktiv. Das lässt sich an dem Datenbankparameter inmemory_size = 0 erkennen.

Die In-Memory Option benötigt einen dedizierten Hauptspeicherbereich (In-Memory Column Store), in dem die Daten im Spaltenformat abgelegt werden. Um die In-Memory Option zu aktivieren, müssen Sie 1. dem In-Memory Column Store Speicher zuweisen und 2. die Datenbank neustarten, wie in diesem Beispiel:

sql> alter system set inmemory_size = 10G scope=spfile;
sql> shutdown immediate;
sql> startup;

Der In-Memory Column Store wird im Oracle Hauptspeicher (System Global Area, SGA) erzeugt. Da die SGA auch für andere Zwecke benötigt wird, sollten Sie die Gesamtgröße der SGA überprüfen und ggf. anpassen. Initialisierungsparameter sga_target.

7. Wie verwende ich die In-Memory Option?
Die Handhabung der In-Memory Option ist sehr einfach. Sie müssen der Datenbank nur mitteilen, welche Datenbankobjekte in den In-Memory Column Store geladen werden sollen, wie in diesem Beispiel:

sql> alter table sales.customers inmemory;

Die In-Memory Option lässt sich für einzelne Tabellen, Partitionen, Tablespaces und Materialized Views einschalten. Der Oracle Optimizer kennt den In-Memory Column Store und nutzt ihn automatisch, jedes Mal wenn eine Datenbankabfrage davon profitiert.

8. Welche Tabellen befinden sich im In-Memory Column Store?
Die View v$im_segments gibt Auskunft über den Inhalt des In-Memory Column Stores:

sql> select v.owner, v.segment_name, v.populate_status from v$im_segments;

9. Muss die gesamte DB in den Hauptspeicher passen um Oracle DB In-Memory Option zu nutzen?
Nein. Mit der In-Memory Option bestimmen Sie selbst, welche Tabellen in den In-Memory Column Store geladen werden. Oracle vertritt die Ansicht, dass es nicht erforderlich ist, die gesamte Datenbank im teuren Hauptspeicher zu halten (meistens werden nur einige wenige Tabellen aktiv genutzt bzw. sind performancekritisch für Ihre Applikation).

Stattdessen implementiert Oracle ein mehrschichtiges Speichermodell, bei dem die Daten, in Abhängigkeit von der tatsächlichen Nutzung, auf unterschiedlichen Storage-Ebenen gespeichert werden. Die „heißen“ Daten (häufig im Zugriff) liegen im Hauptspeicher, die aktiven Daten (seltener abgefragt) liegen auf SSD, die “kalten“ (älteren) Daten liegen auf Festplatte. Eine SQL-Abfrage kann auf alle Daten transparent zugreifen.

10. Muss ich meinen Hauptspeicher verdoppeln um die Oracle DB In-Memory Option nutzen zu können?
Nein. Sie können dem In-Memory Column Store so viel oder so wenig Speicher zuweisen, wie Sie es möchten (die Mindestgröße beträgt 100 MB). Je größer der In-Memory Column Store, desto mehr Daten können darin vorgehalten werden. Um den verfügbaren Speicher maximal zu nutzen, können die Daten komprimiert werden.

11. Werden durch die In-Memory Option 4 Kopien meiner Daten erzeugt?
Nein. Die Behauptung, man bräuchte 4 Kopien der Daten, ist schlichtweg falsch. Die Oracle Datenbank speichert eine Kopie der Daten auf Festplatte (Zeilenformat). Eine kleine Untermenge der Daten – die aktivsten Zeilen, die häufig im Zugriff sind – werden zur Steigerung der Performance im Hauptspeicher im sog. Buffer Cache vorgehalten (Zeilenformat). Mit der In-Memory Option können einige DB-Objekte in den In-Memory Column Store geladen werden  (Spaltenformat). Die Daten, die im In-Memory Column-Store vorliegen, müssen nicht zwingend im Buffer Cache vorhanden sein und umgekehrt.

12. Kann eine Tabelle sowohl im Zeilen- als auch im Spaltenformat vorliegen?
Ja. Die gleiche Tabelle kann im Hauptspeicher sowohl im Buffer Cache (Zeilenformat) als auch im In-Memory Column Store (Spaltenformat) vorliegen. Die DB sorgt für die transaktionale Konsistenz der beiden Repräsentationen.

13. Wird der In-Memory Column Store auf Festplatte gespeichert?
Nein. Die Daten liegen auf Festplatte, wie bisher, im Zeilenformat vor. Die spaltenbasierte Repäsentation gibt es nur im Hauptspeicher.

14. Wann wird der Buffer Cache, wann der In-Memory Column Store verwendet?
Der Optimizer entscheidet automatisch, welcher Speicherbereich für die SQL-Ausführung genutzt wird. Liegen die Daten im Hauptspeicher sowohl im Zeilen- als auch im Spaltenformat vor, werden analytische Abfragen gegen den Column Store ausgeführt. Änderungsoperationen laufen gegen den Buffer Cache.

15. Muss meine Applikation agepasst werden, um die In-Memory Option nutzen zu können?
Nein. Die Oracle DB In-Memory Option wird auf DB-Ebene konfiguriert. Die Applikation muss nicht angepasst werden.

16. Für welche Applikationen eignet sich die Oracle DB In-Memory Option?
Die Oracle DB In-Memory Option erhöht die Performance von analytischen Abfragen.

Da die meisten Analysen in DWH-Umgebungen vorkommen, werden diese Umgebungen von der In-Memory Option am meisten profitieren.

Aber auch OLTP-Umgebungen (z.B. ERP-Applikationen) profitieren von der In-Memory Option, denn auch hier finden Auswertungen statt. Bis jetzt waren analytische Indizes erforderlich um transaktionale Daten performant abzufragen und zu durchsuchen. Der negative Nebeneffekt von analytischen Indizes ist, dass sie bei jeder Datenänderung aktualisiert werden müssen, was den OLTP-Betrieb insgesamt verlangsamt. Nun können analytische Indizes zugunsten der In-Memory Option entfernt werden.

17. Was passiert mit den Daten aus dem In-Memory Column Store nach einem unerwarteten Ausfall des DB-Servers?
Wenn Sie Ihre Datenbank als Single Instance betreiben (Non-RAC), muss der In-Memory Column Store nach einem Datenbankausfall neu befüllt werden. Je nach Datenmenge, kann dieser Vorgang unterschiedlich lange dauern. Aber: während der In-Memory Column Store befüllt wird, ist die Datenbank aktiv und kann genutzt werden. Analytische Abfragen werden ggf. länger dauern (weil manche Daten von der Festplatte geholt werden müssen) aber sie funktionieren. Im Gegensatz dazu, ist eine reine In-Memory Datenbank nicht zugänglich, bis die gesamte Datenbank im Hauptspeicher vorliegt.

Um Ausfallzeiten und Verzögerungen zu minimieren, können Sie Ihre Datenbanken als RAC betreiben. Im RAC hat jede Datenbankinstanz ihren eigenen In-Memory Column Store. Eine Tabelle kann in mehreren Column Stores als Kopie vorliegen. Bei Ausfall einer Datenbankinstanz wird der In-Memory Column Store einer anderen DB-Instanz genutzt.

18. Welche Komprimierungsmöglichkeiten gibt es?
Beim Laden in den In-Memory Column Store können die Daten komprimiert werden. Die 5 Komprimierungsalgorithmen (memcompress for dml, memcompress for query low | high, memcompress for capacity low | high) unterscheiden sich in der Komprimierungsrate und in der Abfrageperformance. Hier sind die Details.

19. Wird Exadata durch den Einsatz der Oracle DB In-Memory Option überflüssig?
Nein, Exadata und die In-Memory Option ergänzen sich sehr gut. Exadata ist die beste Pattform um eine Oracle DB mit In-Memory Option zu betreiben. Als Komplettsystem beinhaltet Exadata alle HW- und SW-Komponenten, die für einen ausfallsicheren Oracle Datenbankcluster erforderlich sind. Das System ist von Oracle vorkonfiguriert, gestetet und optimiert für maximale Performance.

Advertisements

Ihre Frage/Meinung

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s