Uso de Database In-Memory con Autonomous Database
La función Database In-Memory disponible en Autonomous Database puede mejorar significativamente el rendimiento de los análisis en tiempo real y las cargas de trabajo mixtas.
- Acerca de Database In-Memory
Oracle Database In-Memory (Database In-Memory) es un conjunto de funciones que mejora considerablemente el rendimiento de los análisis en tiempo real y las cargas de trabajo mixtas. - Activación de objetos para relleno en memoria
Puede activar y desactivar objetos para relleno en el almacén de columnas en memoria. - Cambio de tamaño del almacén de columnas en memoria
Cuando la instancia de Autonomous Database tiene 16 o más ECPU, la función Database In-Memory está activada por defecto y In-Memory puede utilizar hasta el 50 % de la SGA. - Desactivación del almacén de columnas en memoria
Puede desactivar el almacén de columnas en memoria para su instancia de Autonomous Database modificando el tamaño máximo de la memoria a 0.
Tema principal: Funciones
Acerca de Database In-Memory
Oracle Database In-Memory (Database In-Memory) es un conjunto de funciones que mejora considerablemente el rendimiento de los análisis en tiempo real y las cargas de trabajo mixtas.
-
Ha activado la función en memoria para su base de datos local y ahora está migrando desde la base de datos local a Autonomous Database.
-
Las consultas de la base de datos dedican la mayor parte de su tiempo de ejecución a explorar y filtrar datos, así como a realizar uniones y agregaciones agrupadas.
-
Debe mejorar el tiempo de respuesta de las consultas que son de naturaleza analítica.
El almacén de columnas en memoria es la función clave de Database In-Memory. El almacén de columnas en memoria reside en el área en memoria, que es una parte opcional del área global del sistema (SGA). Cuando se activa para In-Memory, las tablas, particiones, subparticiones y vistas materializadas se rellenan en formato de columna en el almacén de columnas In-Memory. Este formato columnar está optimizado para exploraciones muy rápidas, lo que puede permitir que las consultas analíticas ejecuten órdenes de magnitud más rápido que las consultas basadas en formato de fila. Consulte Oracle Database In-Memory para obtener más información.
El almacén de columnas en memoria crece dinámicamente a lo largo del tiempo para alojar los objetos INMEMORY
más activos. Puede utilizar la cláusula de tabla PRIORITY
o realizar exploraciones de tablas continuas para asegurarse de que el almacén de columnas en memoria crece lo suficiente como para la carga de trabajo. Consulte Tamaño del Almacén de Columnas en Memoria para obtener más información.
INMEMORY
en las sentencias DDL para activar la memoria para los siguientes objetos:
-
Tablas (incluidas las tablas externas)
-
Particiones o Subparticiones
-
Vistas materializadas
Consulte Activación de objetos para relleno en memoria para obtener más información.
Tenga en cuenta lo siguiente para activar Database In-Memory:
-
Database In-Memory solo está disponible para una instancia de Autonomous Database con:
-
El modelo de cálculo de ECPU
-
Un mínimo de 16 ECPU
-
-
Si reinicia la base de datos, los objetos activados para
INMEMORY
necesitan que se vuelvan a rellenar en el almacén de columnas en memoria. Según la configuración de prioridad, es posible que se vuelva a completar automáticamente o en el primer acceso. Si supervisa el rendimiento, observará un rendimiento más lento hasta que se vuelva a rellenar el objeto.
Tema principal: Uso de Database In-Memory con Autonomous Database
Activación de Objetos para el Relleno en Memoria
Puede activar y desactivar objetos para rellenar en el almacén de columnas en memoria.
Solo los objetos con la cláusula INMEMORY
se pueden rellenar en el almacén de columnas en memoria. Utilice las sentencias DDL CREATE TABLE
o ALTER TABLE
para aplicar la cláusula INMEMORY
.
Por defecto, los objetos se crean con el atributo NO INMEMORY
, lo que significa que no son elegibles para rellenar en el almacén de columnas en memoria.
La activación de un objeto como INMEMORY
especifica que un objeto puede residir potencialmente en el almacén de columnas en memoria. El relleno en memoria es un paso independiente que se produce cuando la base de datos lee datos de formato de fila existentes, los transforma en formato de columna y, a continuación, los almacena en el almacén de columnas en memoria. Por defecto, todas las columnas de un objeto con el atributo INMEMORY
se rellenan en el almacén de columnas en memoria.
La definición del atributo INMEMORY
en un objeto implica que el objeto es un candidato para el relleno en el almacén de columnas en memoria. El objeto no se rellena inmediatamente en el almacén de columnas en memoria. Sin embargo, puede utilizar la cláusula PRIORITY
con el atributo INMEMORY
para controlar la prioridad de relleno en el almacén de columnas en memoria. La cláusula PRIORITY
se puede especificar con los siguientes valores:
-
CRITICAL
: el objeto se rellena inmediatamente después de abrir la base de datos. -
HIGH
: el objeto se rellena después de que se hayan rellenado todos los objetosCRITICAL
, si el espacio permanece disponible en el almacén de columnas en memoria. -
MEDIUM
: el objeto se rellena después de que se hayan rellenado todos los objetosCRITICAL
yHIGH
, y el espacio permanece disponible en el almacén de columnas en memoria. -
LOW
: el objeto se rellena después de que se hayan rellenado todos los objetosCRITICAL
,HIGH
yMEDIUM
, si el espacio permanece disponible en el almacén de columnas en memoria. -
NONE
: los objetos solo se rellenan una vez que se exploran por primera vez, si hay espacio disponible en el almacén de columnas en memoria. La prioridadNONE
es la prioridad predeterminada.
Ejemplo para crear una tabla con el atributo INMEMORY
:
CREATE TABLE im_emp (
id NUMBER, name VARCHAR2(20),
depno NUMBER, sal NUMBER,
mgr NUMBER,
loc VARCHAR2(20))
INMEMORY;
En este ejemplo se crea la tabla im_emp
con el atributo INMEMORY
. En el ejemplo se utiliza la prioridad por defecto de NONE
para la cláusula INMEMORY
, lo que significa que la tabla se rellena sólo después de que se explora por primera vez.
Ejemplo para utilizar la cláusula PRIORITY
con el atributo INMEMORY
:
CREATE TABLE im_emp_1 (
id NUMBER, name VARCHAR2(20),
depno NUMBER, sal NUMBER,
mgr NUMBER,
loc VARCHAR2(20))
INMEMORY PRIORITY CRITICAL;
Ejemplo para definir el atributo INMEMORY
para una tabla existente:
ALTER TABLE employees INMEMORY;
En este ejemplo se define el atributo INMEMORY
para la tabla employees
.
También puede modificar una tabla para definir el atributo INMEMORY
solo para un subjuego de columnas de la tabla. Por ejemplo:
ALTER TABLE im_emp_tb INMEMORY NO INMEMORY(depno);
En este ejemplo, se define el atributo INMEMORY
para im_emp_tb
, pero excluye la columna depno
.
Consulte INMEMORY_TABLE_CLAUSE para obtener más información.
INMEMORY
para una tabla, puede consultar la vista V$IM_SEGMENTS
para determinar si los datos de la tabla se rellenan en el almacén de columnas en memoria. Por ejemplo:SELECT SEGMENT_NAME, POPULATE_STATUS
FROM V$IM_SEGMENTS
WHERE SEGMENT_NAME = 'IM_EMP';
Consulte V$IM_SEGMENTS para obtener más información.
NO INMEMORY
. Por ejemplo:ALTER TABLE im_emp NO INMEMORY;
Consulte Cómo Funciona el Relleno de Memoria para obtener más información.
Notas para activar objetos para relleno en memoria:
-
La base de datos no rellena automáticamente los objetos en memoria con el valor
PRIORITY
deNONE
. Sin embargo, puede rellenar manualmente estos objetos en el almacén de columnas en memoria. Consulte Relleno manual del almacén de columnas de IM y Procedimiento DBMS_INMEMORY.POPULATE para obtener más información. -
Debe haber exploraciones de tablas continuas para garantizar que el almacén de columnas en memoria crezca automáticamente lo suficientemente grande como para la carga de trabajo. Si un objeto se rellena parcialmente, la exploración de tabla puede utilizar In-Memory y Exadata Smart Scan.
Tema principal: Uso de Database In-Memory con Autonomous Database
Tamaño del Almacén de Columnas en Memoria
Cuando la instancia de Autonomous Database tiene 16 o más ECPU, la función Database In-Memory está activada por defecto y In-Memory puede utilizar hasta el 50% de la SGA.
La memoria para el área de memoria no está reservada por adelantado y el tamaño inicial del área de memoria es 0. El área en memoria crece gradualmente cada vez que no hay espacio suficiente para la población en memoria.
Los objetos del almacén de columnas In-Memory se gestionan dinámicamente mediante Automatic In-Memory (AIM). La función Automático en memoria está activada por defecto para Autonomous Database.
AIM utiliza estadísticas internas para determinar la frecuencia con la que se accede a los objetos y columnas en memoria. Si el almacén de columnas en memoria está lleno y otros segmentos a los que se accede con más frecuencia se beneficiarían del relleno en el almacén de columnas en memoria, el almacén de columnas en memoria expulsa los segmentos inactivos.
Para asegurarse de que el juego de datos de trabajo siempre se rellena, AIM expulsa automáticamente los segmentos inactivos (a los que se accede con poca frecuencia). Consulte Automatización de la gestión de objetos en memoria para obtener más información.
-
Al cambiar el recuento de ECPU para su instancia de Autonomous Database.
-
Mediante el procedimiento
DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE
para modificar el tamaño máximo de memoria. Puede especificar un valor en el rango entre 0 y 70. Al especificar un valor cero (0), se desactiva Database In-Memory. Por ejemplo:
En este ejemplo, se modifica el tamaño máximo de In-Memory al 60% del tamaño de SGA.BEGIN DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE(60); END; /
Consulte SET_SGA_PERCENTAGE Procedure para obtener más información.
Consulte la vista V$INMEMORY_AREA
para recuperar la información sobre la asignación de espacio en el área en memoria. Por ejemplo:
SELECT * FROM V$INMEMORY_AREA;
Consulte V$INMEMORY_AREA para obtener más información.
Tema principal: Uso de Database In-Memory con Autonomous Database
Desactivación del Almacén de Columnas en Memoria
Puede desactivar el almacén de columnas en memoria para su instancia de Autonomous Database modificando el tamaño máximo de In-Memory a 0.
Por ejemplo:
BEGIN
DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE(0);
END;
/
En este ejemplo, se modifica el valor de tamaño máximo de In-Memory a cero (0) y se desactiva Database In-Memory para la instancia.
Consulte SET_SGA_PERCENTAGE Procedure para obtener más información.
Tema principal: Uso de Database In-Memory con Autonomous Database