Inicio » Oracle » Estadisticas » Medir el rendimiento de Shared Pool

Medir el rendimiento de Shared Pool

Este parte de memoria en Oracle se encarga de almacenar en memoria los últimos SQL y PLSQL ejecutados.

Se compone de tres segmentos:

1. Library cache

2. Row cache

3. UGA Si está configurada la opción de Shared Server en vez de conexiones dedicadas.

1. Library cache:

Cuando escribimos la siguiente sentencia:

SQL> SELECT empno, ename 
FROM emp WHERE empno = 1;

Oracle implícitamente realiza las siguientes acciones:

1. Convierte los caracteres del sql en sus correspondientes códigos numéricos de ASCCI

2. Estos caracteres ASCII se pasan a través de un algoritmo de hash el cual produce un único valor.

3. Oracle comprueba que este valor exista en la Shared Pool. Si existe,el proceso de servidor del usuario utiliza la versión cacheada de la sentencia para ejecutarla. Si no tiene que parsear la sentencia.

Parsear de nuevo la sentencia significa un costo extra, ya que se deben volver a ejecutar los siguientes pasos: Comprobación de los errores de sintaxis

Comprobación de los privilegios sobre los objetos que componen la sentencia.

Recoger las estadísticas para los objetos referenciados.

Preparar el plan de ejecución en función de las estadísticas disponibles.

Generar el P code.

Cuando oracle encuentra la sentencia en la Shared Pool se llama Cache hit y cuando no Cache miss. Por tanto aumentar los porcentajes de cache hint y disminuir los de cahe miss es uno de los retos a la hora de ajustar la Shared Pool.

Medir el rendimiento de la library cache requiere del análisis de los ‘HIT RATIOS’.

Esto se hace consultando la vista V$librarycache:

SQL>SELECT namespace, gets,gethits,pins,pinhits,gethitratio,pinhitratio,reloads, invalidations 
           FROM v$librarycache;

Gethitratio

Cada vez que una sentencia es parseada, el valor de GETS en la vista V$LIBRARYCACHE se incrementa en 1. La columna GETHIT almacena el número de veces que el código SQL y PL/SQL es encontrado en la shared pool con lo cual no requiere parsearlo. Por lo tanto porcentajes cercanos al 90 % son muy buenos

Pinhitratio

Mientras el GETS está relacionado con los bloqueos que se producen en tiempo de parseo, el PINS refleja los bloqueos que se producen en tiempo de ejecución. Cada vez que una sentencia es ejecutada, el valor de PINS se incrementa en 1. La columna PINHITRATIO en V$LIBRARYCACHE refleja la frecuencia con la una sentencia ejecutada encuentra su correspondiente parseo. Valores cercanos al 90% son muy óptimos

Reloads

La columna RELOADS muestra el número de veces que una sentencia ejecutada tiene que re-parsed porque la Library Cache esta anticuadao no sirve la versión parseada de la sentencia. Se puede calcular la numero de reloads comparándolo con la sentencias ejecutadas(PINS):

 SQL> SELECT SUM(reloads)/SUM(pins) "Reload Ratio" 
         FROM v$librarycache 
             Reload Ratio
             ------------ 
             .001501321 0.15

significa que no hay sentencias re-parseadas

Invalidation

Las invalidaciones se producen cuando una sentencia cachada se marca como invalida y se le fuerza a parsearse otra vez a pesar de que esta en la library cache porque alguno de los objetos que componen la sentencia ha sido modificado de cualquier manera.

2. ROW Cache:

El Dictionary Cache hit ratio muestra la frecuencia en una aplicación encuentra la información del diccionario datos que necesita en memoria en vez de tener que leerlo de disco. Esta información de it-ratio se encuentra la vista dinámica V$ROWCACHE.

SQL> SELECT   (SUM(getmisses)/SUM(gets)) "Data Dictionary Hit Ratio" 
            FROM v$rowcache; 
 Data Dictionary Hit Ratio 
------------------------- 
.989400103

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s