domingo, 14 de marzo de 2010

Uso y seccionamiento del Buffer Keep, el Buffer Recycle

Oracle cuenta con una serie de buffers especializados, para diferentes tareas, muchas veces como DBA's
nos vemos restringidos en cuanto al uso de la memoria, dado esto se debe tomar el camino de administrarla
de la mejor manera.

Debemos dividir la informacion  en 3 secciones distintas (bueno sugerencia, hay muchas formas).

a) Informacion de uso constante y volumen pequeño ..... la ideal para permanecer en el Keep.

b) Informacion de uso frecuente, pero de volumen grande (cortesia de la mezcla de historicos y transaccional y de la falta de una politica de historicos establecida en la empresa).

c) Informacion de uso infrecuente y de volumen grande (tienden a vaciar el buffer cache) estos generan grandes variaciones en los tiempos de respuesta ..... ideal para el Recycle


Aqui se deben hacer varias salvedades, la primera pregunta es que es "grande", como todas las cosas, eso depende del volumen de la base de datos y la relacion con respecto a la base de datos.

No es lo mismo la relacion de una cache de 2GB, contra una base de datos de 20GB,
que 2GB contra una base de datos de 200GB.

La idea es intentar que las estructuras mas utilizadas por el transaccional se encuentren en el Keep, ojala a un 100% de hit ratio. Eso garantiza que los usuarios tienen lo que necesitan aunque se corran otros procesos.

Claro esto no siempre es posible, depende en gran medida del diseño de la base de datos, asi que el primer paso es identificar las estructuras mas utilizadas y su peso a nivel de accesos a la base de datos.

El siguiente paso es identificar las estructuras menos usadas, pero grandes, de uso infrecuente pero que ocurren, estas debemos tratar de asociarlas al buffer recycle, este no necesita tener un gran tamaño, es evidente que no va a haber una cache capaz de mantenerla y adicionalmente no vale la pena.

Este proceso se debe llevar a cabo en una forma iterativa y de monitoreo, para verificar que las desiciones tomadas son efectivarmente adecuadas.

Efecto Particionamiento sobre Tablas

Queria llamar la atencion sobre un fenomeno asociado al particionamiento de tablas.

 Es conocido que el particionar mejora los accesos asociados a la llave de particionamiento, para la tabla
o indice sobre la que se realiza el proceso.

Sin embargo adicional a esto se da un efecto secundario que es la mejora del sistema como un todo, al seccionar el uso de recursos de la cache de Oracle y del disco, el sistema como un todo se beneficia,
pues el uso menor de buffers, por ejemplo, permite que otras estructuras vengan a ocupar el lugar de la
tabla o indice particionado.

Asimismo los recorridos de disco de las estructuras completas se ven recortados
liberando la cola de solicitudes para otras estructuras.