miércoles, 5 de junio de 2013

extend/create datafile Single Instance vs Exadata

En mi preparación para someterme al examen de  1Z0-027 Oracle Exadata Database Machine X3 Administration, encontré un documento en el que resaltaba lo siguiente:

"With Exadata storage, the create/extend tablespace operation is executed more efficiently. Instead of formatting empty blocks in database server memory and writing them to storage, a single iDB command is sent to Exadata Storage Server instructing it to format the blocks. Database server memory usage is reduced and I/O associated with the creation and formatting of the database blocks is eliminated with Exadata storage."

Me llamó mucho la atención el hecho que una creación y/o extensión de un datafile implicase formatear bloques en blanco y luego escribirlos a disco. La primera impresión que me dio fue que se referían a bloques de oracle. ¿Recuerdan el mapeo entre estructuras físicas y lógicas en oracle?, si ya no lo recuerdan, les dejo la siguiente imagen.




Bueno, no me quedé con la curiosidad y extendí un datafile desde 250M hasta 8G y mientras el proceso avanzaba  vi si los bloques en el SGA cambiaban, no vi nada extraño.

Luego observé todas las estructuras del SGA y su espacio utilizado y libre pensando en que quizás esos bloques formateados en blanco eran creados en otra estructura diferente, tampoco vi nada extraño, todas las estructuras se mantuvieron con los mismo megas mientras el proceso de extensión del datafile se realizaba.

Hasta aquí ya estaba dudando de la documentación de Oracle, pensé que ese párrafo que había leído no era correcto, sin embargo, fiel a oracle y a su buen funcionamiento comprobado y asegurado :), descarté esa idea y se me ocurrió que quizás no era memoria de la base de datos la que era utilizada, sino la del propio servidor, entonces volví a realizar el proceso pero ahora monitoreando la memoria del servidor apoyándome de la herramienta top.

Los recursos del servidor estaban inicialmente como lo muestra la siguiente imagen:


Unos segundos antes que terminara el proceso de extensión del datafile, los recursos del servidor estaban así:



Una vez visto este comportamiento, ya mi curiosidad quedó satisfecha y pude concluir que en efecto, cada creación y/o extendido de un datafile implica consumir recursos de memoria del lado del servidor de la base de datos, y precisamente es esto, una de las características que Exadata ya tiene solucionado, por medio del iDB (intelligent database protocol) se le envía la instrucción de creación y/o extensión del datafile al Exadata Storege Server y él es el encargado de realizar esta operación, de esta manera el Database Server no tiene que ceder su memoria. Por supuesto, la memoria utilizada en el servidor con single instance es proporcional al tamaño en GB que estemos creando o extendiendo el datafile.

Por otro lado, si no somos el DBA de un Exadata y nos toca ganar el pan de cada día administrando un single instance :(, nos queda como lección crear y/o extender nuestros datafiles en un momento donde la base de datos no tenga tanta carga, pues de lo contrario el servidor puede paginear (swapping), degradando el performance. 

No hay comentarios:

Publicar un comentario

Oracle ACE Director Award - Deiby Gómez

Thanks #OracleACE Program for this awesome certificate recognizing the work I have done in the community for the last year. Looking forwa...