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).
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