Database In-Memory mit Autonomous Database verwenden
Das Database In-Memory-Feature, das in Autonomous Database verfügbar ist, 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 Feature "Datenbank-In-Memory" standardmäßig aktiviert. 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 Ihre Autonomous Database deaktivieren, indem Sie die maximale In-Memory-Größe in 0 ändern.
Übergeordnetes Thema: Features
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.
-
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 damit, Daten zu scannen und zu filtern sowie Joins und Gruppierungsaggregationen auszuführen.
-
Sie müssen die Antwortzeit Ihrer Abfragen verbessern, die analytisch sind.
Der In-Memory-Spaltenspeicher ist die Schlüsselfunktion 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 im In-Memory-Spaltenspeicher in einem spaltenförmigen Format aufgefüllt. Dieses spaltenförmige Format ist für sehr schnelle Scans optimiert, mit denen analytische Abfragen Größenordnungen schneller ausführen können als zeilenformatbasierte Abfragen. Weitere Informationen finden Sie unter Oracle Database In-Memory.
Der In-Memory-Spaltenspeicher wächst mit der Zeit dynamisch, um die heißesten INMEMORY
-Objekte aufzunehmen. Sie können die PRIORITY
-Tabellenklausel 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 verwenden, um In-Memory für die folgenden Objekte zu aktivieren:
-
Tabellen (einschließlich externer Tabellen)
-
Partitionen oder Unterpartitionen
-
Materialized Views
Weitere Informationen finden Sie unter Objekte für In-Memory Population aktivieren.
Beachten Sie Folgendes, um Database In-Memory zu aktivieren:
-
Database In-Memory ist nur für eine Autonomous Database-Instanz verfügbar mit:
-
Das ECPU-Compute-Modell
-
Mindestens 16 ECPUs
-
-
Wenn Sie die Datenbank neu starten, müssen Objekte, die für
INMEMORY
aktiviert sind, erneut in den In-Memory-Spaltenspeicher geladen werden. Je nach Prioritätseinstellung kann eine erneute Datenauffüllung 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-Population aktivieren
Sie können Objekte für das Auffüllen im In-Memory-Spaltenspeicher aktivieren und deaktivieren.
Nur Objekte mit der INMEMORY
-Klausel können in den In-Memory-Spaltenspeicher aufgefüllt werden. Verwenden Sie die DDL-Anweisungen CREATE TABLE
oder ALTER TABLE
, um die INMEMORY
-Klausel anzuwenden.
Standardmäßig werden Objekte mit dem Attribut NO INMEMORY
erstellt. Das bedeutet, dass sie nicht zum Auffüllen in den In-Memory-Spaltenspeicher berechtigt sind.
Wenn Sie ein Objekt als INMEMORY
aktivieren, wird angegeben, dass sich ein Objekt möglicherweise im In-Memory-Spaltenspeicher befinden kann. In-Memory-Population ist ein separater Schritt, der auftritt, wenn die Datenbank vorhandene Daten im Zeilenformat liest, sie in ein spaltenorientiertes Format umwandelt und dann im In-Memory-Spaltenspeicher speichert. Standardmäßig werden alle Spalten in einem Objekt mit dem Attribut INMEMORY
in den In-Memory-Spaltenspeicher gefüllt.
Wenn Sie das Attribut INMEMORY
für ein Objekt festlegen, ist das Objekt ein Kandidat für die Auffüllung im In-Memory-Spaltenspeicher. Das Objekt wird nicht sofort in den In-Memory-Spaltenspeicher gefüllt. Sie können jedoch die PRIORITY
-Klausel 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 Speicherplatz im In-Memory-Spaltenspeicher verfügbar bleibt. -
MEDIUM
: Das Objekt wird aufgefüllt, nachdem alleCRITICAL
- undHIGH
-Objekte aufgefüllt wurden und Speicherplatz im In-Memory-Spaltenspeicher verfügbar bleibt. -
LOW
: Das Objekt wird aufgefüllt, nachdem alle ObjekteCRITICAL
,HIGH
undMEDIUM
aufgefüllt wurden, wenn Speicherplatz im In-Memory-Spaltenspeicher verfügbar bleibt. -
NONE
: Objekte werden erst aufgefüllt, nachdem sie zum ersten Mal gescannt wurden, wenn Speicherplatz im In-Memory-Spaltenspeicher 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 INMEMORY
-Klausel 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. Beispiel:
ALTER TABLE im_emp_tb INMEMORY NO INMEMORY(depno);
In diesem Beispiel wird das Attribut INMEMORY
für die 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. Beispiel:SELECT SEGMENT_NAME, POPULATE_STATUS
FROM V$IM_SEGMENTS
WHERE SEGMENT_NAME = 'IM_EMP';
Weitere Informationen finden Sie unter V$IM_SEGMENTS.
NO INMEMORY
aktualisiert wird. Beispiel: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-Population:
-
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 laden. Weitere Informationen finden Sie unter IM-Spaltenspeicher manuell auffüllen und Prozedur DBMS_INMEMORY.POPULATE. -
Es müssen fortlaufende Tabellenscans durchgeführt werden, 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
In-Memory Column Store-Größe ändern
Wenn Ihre Autonomous Database-Instanz über 16 oder mehr ECPUs verfügt, ist das Feature "Datenbank-In-Memory" standardmäßig aktiviert. Bis zu 50% der SGA können von In-Memory verwendet werden.
Der Speicher für den In-Memory-Bereich ist im Voraus nicht reserviert, und die Anfangsgröße des In-Memory-Bereichs ist 0. Der In-Memory-Bereich wächst allmählich jedes Mal, wenn nicht genügend Platz für die In-Memory-Bevölkerung vorhanden ist.
Objekte im In-Memory-Spaltenspeicher werden dynamisch von Automatic In-Memory (AIM) verwaltet. "Automatic In-Memory" ist standardmäßig für Autonomous Database aktiviert.
AIM verwendet interne Statistiken, um zu bestimmen, 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 Auffüllung im In-Memory-Spaltenspeicher profitieren würden, entfernt der In-Memory-Spaltenspeicher inaktive Segmente.
Um sicherzustellen, dass das Arbeits-Dataset immer gefü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 Ihre 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 die Datenbank in-Memory deaktiviert. Beispiel:
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 innerhalb des In-Memory-Bereichs abzurufen. Beispiel:
SELECT * FROM V$INMEMORY_AREA;
Weitere Informationen finden Sie unter 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 Ihre Autonomous Database deaktivieren, indem Sie die maximale In-Memory-Größe in 0 ändern.
Beispiel:
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