Database In-Memory mit Autonomous Database verwenden
Das in Autonomous Database verfügbare Database In-Memory-Feature kann die Performance für Echtzeitanalysen und gemischte Workloads erheblich verbessern.
- Info zu Database In-Memory
Oracle Database In-Memory (Database In-Memory) ist eine Suite von Features, mit denen die Performance für Echtzeitanalysen und gemischte Workloads erheblich verbessert wird. - Objekte für In-Memory-Auffüllung aktivieren
Sie können Objekte für die Auffüllung im In-Memory-Spaltenspeicher aktivieren und deaktivieren. - Größe des In-Memory-Spaltenspeichers festlegen
Wenn Ihre Autonomous Database-Instanz über 16 oder mehr ECPUs verfügt, ist das Database In-Memory-Feature standardmäßig aktiviert, und bis zu 50% der SGA können von In-Memory verwendet werden. - In-Memory-Spaltenspeicher deaktivieren
Sie können den In-Memory-Spaltenspeicher für Autonomous Database deaktivieren, indem Sie die maximale In-Memory-Größe in 0 ändern.
Übergeordnetes Thema: Features
Database In-Memory
Oracle Database In-Memory (Database In-Memory) ist eine Suite von Features, mit denen die Performance für Echtzeitanalysen und gemischte Workloads erheblich verbessert wird.
-
Sie haben das In-Memory-Feature für Ihre On-Premise-Datenbank aktiviert und migrieren jetzt von der On-Premise-Datenbank zu Autonomous Database.
-
Abfragen in Ihrer Datenbank verbringen den größten Teil ihrer Laufzeit mit dem Scannen und Filtern von Daten sowie mit der Ausführung von Joins und gruppierten Aggregationen.
-
Sie müssen die Antwortzeit Ihrer Abfragen verbessern, die analytischer Natur sind.
Der In-Memory-Spaltenspeicher ist das Hauptfeature von Database In-Memory. Der In-Memory-Spaltenspeicher befindet sich im In-Memory-Bereich, einem optionalen Teil der System Global Area (SGA). Wenn diese Option für In-Memory aktiviert ist, werden Tabellen, Partitionen, Unterpartitionen und Materialized Views in einem spaltenförmigen Format im In-Memory-Spaltenspeicher aufgefüllt. Dieses Spaltenformat ist für sehr schnelle Scans optimiert. Dadurch können analytische Abfragen Größenordnungen schneller ausführen als zeilenformatbasierte Abfragen. Weitere Informationen finden Sie unter Oracle Database In-Memory.
Der In-Memory-Spaltenspeicher wächst im Laufe der Zeit dynamisch an, um die heißesten INMEMORY
-Objekte aufzunehmen. Sie können die Tabelle PRIORITY
verwenden oder kontinuierliche Tabellenscans durchführen, um sicherzustellen, dass der In-Memory-Spaltenspeicher groß genug für Ihre Workload wird. Weitere Informationen finden Sie unter Größe des In-Memory Column Store festlegen.
INMEMORY
in DDL-Anweisungen können Sie In-Memory für die folgenden Objekte aktivieren:
-
Tabellen (einschließlich externer Tabellen)
-
Partitionen oder Unterpartitionen
-
Materialized Views
Weitere Informationen finden Sie unter Objekte für In-Memory-Auffüllung aktivieren.
Beachten Sie Folgendes, um Database In-Memory zu aktivieren:
-
Database In-Memory ist nur für eine Autonomous Database-Instanz mit:
-
Das ECPU-Compute-Modell
-
Mindestens 16 ECPUs
-
-
Wenn Sie die Datenbank neu starten, müssen für
INMEMORY
aktivierte Objekte erneut in den In-Memory-Spaltenspeicher aufgefüllt werden. Je nach Prioritätseinstellung kann das erneute Auffüllen automatisch oder beim ersten Zugriff erfolgen. Wenn Sie die Performance überwachen, werden Sie eine langsamere Performance feststellen, bis das Objekt erneut aufgefüllt wird.
Übergeordnetes Thema: Datenbank-In-Memory mit Autonomous Database verwenden
Objekte für In-Memory-Auffüllung aktivieren
Sie können Objekte zum Auffüllen im In-Memory-Spaltenspeicher aktivieren und deaktivieren.
Nur Objekte mit der Klausel INMEMORY
können im In-Memory-Spaltenspeicher aufgefüllt werden. Verwenden Sie DDL-Anweisungen CREATE TABLE
oder ALTER TABLE
, um die Klausel INMEMORY
anzuwenden.
Standardmäßig werden Objekte mit dem Attribut NO INMEMORY
erstellt, d.h. sie können nicht in den In-Memory-Spaltenspeicher aufgefüllt werden.
Wenn Sie ein Objekt als INMEMORY
aktivieren, wird angegeben, dass sich ein Objekt möglicherweise im In-Memory-Spaltenspeicher befinden kann. Die In-Memory-Auffüllung ist ein separater Schritt, der auftritt, wenn die Datenbank vorhandene Daten im Zeilenformat liest, sie in ein Spaltenformat transformiert und dann im In-Memory-Spaltenspeicher speichert. Standardmäßig werden alle Spalten in einem Objekt mit dem Attribut INMEMORY
im In-Memory-Spaltenspeicher aufgefüllt.
Das Festlegen des Attributs INMEMORY
für ein Objekt impliziert, dass das Objekt ein Kandidat für die Population im In-Memory-Spaltenspeicher ist. Das Objekt wird nicht sofort im In-Memory-Spaltenspeicher aufgefüllt. Sie können jedoch die Klausel PRIORITY
mit dem Attribut INMEMORY
verwenden, um die Priorität der Auffüllung im In-Memory-Spaltenspeicher zu steuern. Die Klausel PRIORITY
kann mit den folgenden Werten angegeben werden:
-
CRITICAL
: Das Objekt wird unmittelbar nach dem Öffnen der Datenbank aufgefüllt. -
HIGH
: Das Objekt wird aufgefüllt, nachdem alleCRITICAL
-Objekte aufgefüllt wurden, wenn im In-Memory-Spaltenspeicher weiterhin Speicherplatz verfügbar ist. -
MEDIUM
: Das Objekt wird aufgefüllt, nachdem alleCRITICAL
- undHIGH
-Objekte aufgefüllt wurden, und der Speicherplatz bleibt im In-Memory-Spaltenspeicher verfügbar. -
LOW
: Das Objekt wird aufgefüllt, nachdem alleCRITICAL
-,HIGH
- undMEDIUM
-Objekte aufgefüllt wurden, wenn im In-Memory-Spaltenspeicher weiterhin Speicherplatz verfügbar ist. -
NONE
: Objekte werden erst aufgefüllt, nachdem sie zum ersten Mal gescannt wurden, wenn im In-Memory-Spaltenspeicher Speicherplatz verfügbar ist. Die PrioritätNONE
ist die Standardpriorität.
Beispiel zum Erstellen einer Tabelle mit dem Attribut INMEMORY
:
CREATE TABLE im_emp (
id NUMBER, name VARCHAR2(20),
depno NUMBER, sal NUMBER,
mgr NUMBER,
loc VARCHAR2(20))
INMEMORY;
In diesem Beispiel wird die Tabelle im_emp
mit dem Attribut INMEMORY
erstellt. Im Beispiel wird die Standardpriorität NONE
für die Klausel INMEMORY
verwendet. Das bedeutet, dass die Tabelle erst aufgefüllt wird, nachdem sie zum ersten Mal gescannt wurde.
Beispiel für die Verwendung der Klausel PRIORITY
mit dem Attribut INMEMORY
:
CREATE TABLE im_emp_1 (
id NUMBER, name VARCHAR2(20),
depno NUMBER, sal NUMBER,
mgr NUMBER,
loc VARCHAR2(20))
INMEMORY PRIORITY CRITICAL;
Beispiel zum Festlegen des Attributs INMEMORY
für eine vorhandene Tabelle:
ALTER TABLE employees INMEMORY;
In diesem Beispiel wird das Attribut INMEMORY
für die Tabelle employees
festgelegt.
Sie können eine Tabelle auch so ändern, dass das Attribut INMEMORY
nur für eine Teilmenge von Spalten in der Tabelle festgelegt wird. Beispiele:
ALTER TABLE im_emp_tb INMEMORY NO INMEMORY(depno);
In diesem Beispiel wird das Attribut INMEMORY
für im_emp_tb
festgelegt, die Spalte depno
wird jedoch ausgeschlossen.
Weitere Informationen finden Sie unter INMEMORY_TABLE_CLAUSE.
INMEMORY
für eine Tabelle aktiviert wurde, können Sie die View V$IM_SEGMENTS
abfragen, um zu bestimmen, ob Daten aus der Tabelle im In-Memory-Spaltenspeicher aufgefüllt werden. Beispiele:SELECT SEGMENT_NAME, POPULATE_STATUS
FROM V$IM_SEGMENTS
WHERE SEGMENT_NAME = 'IM_EMP';
Weitere Informationen finden Sie in V$IM_SEGMENTS.
NO INMEMORY
aktualisiert wird. Beispiele:ALTER TABLE im_emp NO INMEMORY;
Weitere Informationen finden Sie unter How In-Memory Population Works.
Hinweise zum Aktivieren von Objekten für In-Memory-Auffüllung:
-
Die Datenbank füllt In-Memory-Objekte nicht automatisch mit der Einstellung
PRIORITY
vonNONE
auf. Sie können diese Objekte jedoch manuell in den In-Memory-Spaltenspeicher auffüllen. Weitere Informationen finden Sie unter IM-Spaltenspeicher manuell auffüllen und Prozedur DBMS_INMEMORY.POPULATE. -
Es müssen kontinuierliche Tabellenscans vorhanden sein, um sicherzustellen, dass der In-Memory-Spaltenspeicher automatisch groß genug für Ihre Workload wird. Wenn ein Objekt teilweise aufgefüllt ist, kann der Tabellenscan sowohl In-Memory als auch Exadata Smart Scan verwenden.
Übergeordnetes Thema: Datenbank-In-Memory mit Autonomous Database verwenden
Größe des In-Memory Column Store festlegen
Wenn Ihre Autonomous Database-Instanz über 16 oder mehr ECPUs verfügt, ist das Database In-Memory-Feature standardmäßig aktiviert, und bis zu 50% der SGA können von In-Memory verwendet werden.
Der Speicher für den speicherresidenten Bereich ist nicht im Voraus reserviert, und die anfängliche Größe des speicherresidenten Bereichs beträgt 0. Der In-Memory-Bereich wächst allmählich, wenn nicht genügend Platz für die In-Memory-Population vorhanden ist.
Objekte im In-Memory-Spaltenspeicher werden dynamisch von Automatic In-Memory (AIM) verwaltet. "Automatischer In-Memory" ist standardmäßig für Autonomous Database aktiviert.
AIM ermittelt anhand interner Statistiken, wie häufig auf In-Memory-Objekte und -Spalten zugegriffen wird. Wenn der In-Memory-Spaltenspeicher voll ist und andere Segmente, auf die häufiger zugegriffen wird, von der Population im In-Memory-Spaltenspeicher profitieren würden, entfernt der In-Memory-Spaltenspeicher inaktive Segmente.
Um sicherzustellen, dass das Arbeits-Dataset immer aufgefüllt wird, entfernt AIM automatisch kalte Segmente (auf die selten zugegriffen wird). Weitere Informationen finden Sie unter Verwaltung von In-Memory-Objekten automatisieren.
-
Durch Ändern der ECPU-Anzahl für Autonomous Database.
-
Mit der Prozedur
DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE
können Sie die maximale In-Memory-Größe ändern. Sie können einen Wert im Bereich zwischen 0 und 70 angeben. Wenn Sie einen Nullwert (0) angeben, wird Database In-Memory deaktiviert. Beispiele:
In diesem Beispiel wird die maximale In-Memory-Größe auf 60% der SGA-Größe geändert.BEGIN DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE(60); END; /
Weitere Informationen finden Sie unter Prozedur SET_SGA_PERCENTAGE.
Fragen Sie die Ansicht V$INMEMORY_AREA
ab, um Informationen zur Speicherplatzzuweisung im In-Memory-Bereich abzurufen. Beispiele:
SELECT * FROM V$INMEMORY_AREA;
Weitere Informationen finden Sie in V$INMEMORY_AREA.
Übergeordnetes Thema: Datenbank-In-Memory mit Autonomous Database verwenden
In-Memory Column Store deaktivieren
Sie können den In-Memory-Spaltenspeicher für Autonomous Database deaktivieren, indem Sie die maximale In-Memory-Größe in 0 ändern.
Beispiele:
BEGIN
DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE(0);
END;
/
In diesem Beispiel wird der Wert für die maximale In-Memory-Größe auf null (0) geändert, und Database In-Memory wird für die Instanz deaktiviert.
Weitere Informationen finden Sie unter Prozedur SET_SGA_PERCENTAGE.
Übergeordnetes Thema: Datenbank-In-Memory mit Autonomous Database verwenden