[ 2015-07-28 ]

Oracle Database 12c: In-Memory (Parte II)

Habilitación de “In-Memory Column Store”
A partir de Oracle Database 12c Release 1 (12.1.0.2) se agregaron seis nuevos parámetros de inicio que comienzan con el prefijo INMEMORY_ para controlar la funcionalidad de In-Memory (Listado de código 1).  Adicionalmente el nuevo parámetro OPTIMIZER_INMEMORY_AWARE activa o desactiva todas las mejoras del optimizador basado en costos para “In-Memory”. El valor predeterminado es TRUE. Establecer  el parámetro en FALSE hace que el optimizador ignore la propiedad in-memory de las tablas durante la optimización de  sentencias SQL.
Listado de código 1: Parámetros de inicio para  In-Memory
SQL> show parameter  inmemory
NAME                                              TYPE            VALUE
------------------------------------------------- --------------  --------
inmemory_clause_default                           string                     
inmemory_force                                    string          DEFAULT
inmemory_max_populate_servers                     integer         1
inmemory_query                                    string          ENABLE
inmemory_size                                     big  integer    0
inmemory_trickle_repopulate_servers_percent       integer         1
optimizer_inmemory_aware                          boolean         TRUE
    
“INMEMORY_SIZE” establece el tamaño del área de In Memory  para el In-Memory Column Store (IM column store)  de una instancia de base de datos. El valor por defecto es 0, lo cual significa que IM column store  no esta siendo utilizado, ya que la característica In-Memory  no esta habilitada de forma automática. Tenemos que cambiar el parámetro de inicialización “INMEMORY_SIZE” a una cantidad distinta de cero para poder habilitar “IM Column store”. Si desea que esta cantidad no sea tomada del tamaño de SGA actual, entonces debe ampliar el tamaño de la SGA teniendo en cuenta el valor del parámetro INMEMORY_SIZE. De esta manera, si se está utilizando Gestión de Memoria Automática (AMM), se deberá  ampliar el valor del parámetro MEMORY_TARGET o en el caso que se esté utilizando Gestión Automática de Memoria Compartida(ASMM), entonces tendrá que hacerlo con el valor del parámetro SGA_TARGET.
En nuestro caso estamos usando AMM con un máximo de memoria target de 1024MB y estamos estableciendo el parámetro INMEMORY en 300MB (Listado de código 2). 
Listado de código 2:Habilitar la funcionalidad de In-Memory
SQL> alter system set memory_max_target=1324M scope=spfile; System altered.

SQL>alter system set inmemory_size=300M  scope=spfile; System altered.

SQL>shutdown immediate;
Database closed.
Database dismounted.

ORACLE instance shut  down.

SQL> startup

ORACLE instance started.
Total System Global Area  1392508928 bytes
Fixed Size                2924304 bytes
Variable Size             1040187632 bytes
Database Buffers          16777216 bytes
Redo Buffers              13852672 bytes
In-Memory Area            318767104 bytes
Database mounted.
Database opened.
 SQL> alter system set memory_target=1324M;
System altered.
SQL> select * from  v$sga;
NAME                  VALUE      CON_ID
--------------------  ---------- -------
Fixed Size            2924304          0
Variable Size         939524336        0
Database Buffers      117440512        0
Redo Buffers          13852672         0
In-Memory Area        318767104        0
 

Populación de In-Memory 
Solo los objetos a los cuales se le especifique el atributo INMEMORY en la sentencia DDL serán cargados en el área de IM Column Store.



Figura 3: 
Clausula INMEMORY
Se puede definir la cláusula INMEMORY a:
  • Tablas enteras
  • Grrupos específicos de columnas
  • Vistas materializadas
  • o particiones de una tabla (Listado de código 3).

No hay comentarios:

Publicar un comentario