Uso de la base de datos en memoria con Autonomous Database
La función Database In-Memory disponible en Autonomous Database puede mejorar significativamente el rendimiento para análisis en tiempo real y 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 el relleno en memoria
Puede activar y desactivar objetos para el 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 de Autonomous Database modificando el tamaño máximo en memoria a 0.
Tema principal: Funciones
Acerca de la base de datos en memoria
Oracle Database In-Memory (Database In-Memory) es un conjunto de funciones que mejora considerablemente el rendimiento para análisis en tiempo real y cargas de trabajo mixtas.
-
Ha activado la función En memoria para la base de datos local y ahora está migrando de la base de datos local a Autonomous Database.
-
Las consultas de la base de datos pasan la mayor parte de su tiempo de ejecución explorando y filtrando datos, así como realizando 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 In-Memory reside en el área In-Memory, que es una parte opcional del área global del sistema (SGA). Cuando se activa para In-Memory, las tablas, las particiones, las subparticiones y las vistas materializadas se rellenan en formato columnar 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 de forma dinámica a lo largo del tiempo para alojar los objetos INMEMORY
más activos. Puede utilizar la cláusula table PRIORITY
o realizar exploraciones de tablas continuas para garantizar que el almacén de columnas en memoria crezca lo suficientemente grande para la carga de trabajo. Consulte Cambio de Tamaño del Almacén de Columnas en Memoria para obtener más información.
INMEMORY
en sentencias DDL para activar In-Memory para los siguientes objetos:
-
Tablas (incluidas las tablas externas)
-
Particiones o subparticiones
-
Vistas Materializadas
Consulte Enabling Objects for In-Memory Population 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 informático ECPU
-
Un mínimo de 16 ECPU
-
-
Si reinicia la base de datos, los objetos activados para
INMEMORY
necesitan volver a rellenarse en el almacén de columnas en memoria. En función de la configuración de prioridad, la repoblación se puede producir automáticamente o en el primer acceso. Si está supervisando 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
son elegibles para rellenarlos 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 aptos para rellenarlos 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 rellenar 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 rellenar 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 después de 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 solo 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 se excluye la columna depno
.
Consulte INMEMORY_TABLE_CLAUSE.
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 How In-Memory Population Works para obtener más información.
Notas para activar objetos para el 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 continuas de tablas para garantizar que el almacén de columnas en memoria crezca automáticamente lo suficientemente grande para la carga de trabajo. Si un objeto se rellena parcialmente, la exploración de tabla puede utilizar la exploración inteligente en memoria y de Exadata.
Tema principal: Uso de Database In-Memory con Autonomous Database
Ajuste de Tamaño del Almacenamiento 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 en memoria no está reservada por adelantado y el tamaño inicial del área en memoria es 0. El Área In-Memory crece gradualmente cada vez que hay espacio insuficiente para la población In-Memory.
Los objetos del almacén de columnas en memoria se gestionan de forma dinámica mediante la función Automatic In-Memory (AIM). Automatic In-Memory está activado 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 In-Memory 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 In-Memory, el almacén de columnas In-Memory expulsa segmentos inactivos.
Para garantizar 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 Automating Management of In-Memory Objects para obtener más información.
-
Cambiando el recuento de ECPU de Autonomous Database.
-
Mediante el procedimiento
DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE
para modificar el tamaño máximo en memoria. Puede especificar un valor en el rango entre 0 y 70. Al especificar un valor de 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 procedimiento SET_SGA_PERCENTAGE para obtener más información.
Consulte la vista V$INMEMORY_AREA
para recuperar la información sobre la asignación de espacio dentro del á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 Autonomous Database modificando el tamaño máximo en memoria 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 en memoria a cero (0) y se desactiva Database In-Memory para la instancia.
Consulte procedimiento SET_SGA_PERCENTAGE para obtener más información.
Tema principal: Uso de Database In-Memory con Autonomous Database