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