DOAG Datenbank Kolumne: Schnelle Lookups mit MemOptimized Rowstore

  • Erstellt von Ulrike Schwinn
  • Oracle, Datenbank Kolumne, Oracle, Datenbank

Wussten Sie schon, dass es einen speziellen Memory-Bereich in der Oracle-Datenbank für schnelle In-Memory Lookups gibt?

Das Ziel ist dabei die Steigerung von Datenabfrage-Performance für Streaming-Anwendungen wie zum Beispiel IoT-Anwendungen, die in sehr hoher Frequenz Daten für Clients abfragen. 

Fast Lookup verwendet einen Hash-Index, der im sogenannten MemOptimize-Pool gespeichert ist, um einen schnellen Zugriff auf Tabellenblöcke zu ermöglichen, die permanent im Puffercache “gepinned“ sind, wodurch Festplatten-I/O vermieden werden. 

Ist dieser Memory-Bereich in der SGA konfiguriert, verwenden Key-Value-Lookup-Abfragen, die auf Primärschlüsselwerten basieren, während der Ausführung direkt einen Hash-Index aus diesem Pool. 

Was muss man dafür tun? Im ersten Schritt wird die Größe des MemOptimize-Pools über einen speziellen Initialisierungsparameter konfiguriert. Dann erfolgt die Aktivierung von Fast Lookup auf Tabellenebene mit der MEMOPTIMIZE-FOR-READ-Klausel im CREATE-TABLE- oder ALTER-TABLE-Statement. Im letzten Schritt wird der Pool befüllt und danach kann es losgehen. Keine Änderungen auf Anwendungsebene oder zusätzliche Wartung ist erforderlich. Bitte beachten Sie, dass MemOptimized Rowstore nur für Abfragen mit einem einzigen Gleichheits-Prädikat für den Primärschlüssel in der WHERE-Klasuel verwendet wird. Andere Arten von Abfragen werden nicht unterstützt.

Übrigens MemOptimized Rowstore, eingeführt in Oracle Database 18c, ist in der Enterprise Edition in Oracle Database 21c und ab Oracle Database 19c Release Update 19.12 enthalten (siehe auch Database Licensing Information User Manual).

Mehr dazu findet sich auch in unserem Blogposting “Fast Lookup with Memory Optimized Rowstore” unter https://blogs.oracle.com/coretec/post/fast-lookup-with-memoptimized-rowstore

Ulrike Schwinn

© Martin Meyer