¿Qué es un SGA? (Oracle)
El área global del sistema (SGA) es un grupo de áreas de memoria compartida que se dedican a una instancia de "Oracle" (un ejemplo es su base de datos y programas de RAM).
Cada instancia Oracle requiere su área de memoria propia. Esta área de memoria se llama System Global Area o Shared Global Area(SGA). Si bien esta área de memoria es dedicada para la instancia, es compartida por todos los usuarios que se conectan a la base. Es decir que, desde el punto de vista de la instancia, la SGA es una área de memoria dedicada pues no se comparte con otras instancias. Desde el punto de vista de los usuarios que se conectan a la instancia, la SGA es un área de memoria compartida. El tamaño recomendable para una SGA = 50% de la memoria principal, para que el próximo acceso a los mismos sea más rápido.
La SGA está compuesta por tres estructuras principales:
• LA BUFFER CACHE
o Es el caché que almacena los bloques de datos leidos de los segmentos de datos de la BD, tales como tablas, índices y clusters. Los bloques modificados se llamas bloques sucios. El tamaño de buffer caché se fija por el parámetro DB_BLOCK_BUFFERS del fichero init.ora.
o Como el tamaño del buffer suele ser pequeño para almacenar todos los bloques de datos leidos, su gestión se hace mediante el algoritmo LRU.
• LA SHARED POOL
En esta zona se encuentran las sentencias SQL que han sido analizadas. El analisis sintáctico de las sentencias SQL lleva su tiempo y Oracle mantiene las estructuras asociadas a cada sentencia SQL analizada durante el tiempo que pueda para ver si puede reutilizarlas. Antes de analizar una sentencia SQL, Oracle mira a ver si encuentra otra sentencia exactamente igual en la zona de SQL compartido. Si es así, no la analiza y pasa directamente a ejecutar la que mantinene en memoria. De esta manera se premia la uniformidad en la programación de las aplicaciones. La igualdad se entiende que es lexicografica, espacios en blanco y variables incluidas. El contenido de la zona de SQL compartido es:
o Plan de ejecución de la sentencia SQL.
o Texto de la sentencia.
o Lista de objetos referenciados.
Los pasos de procesamiento de cada petición de análisis de una sentencia SQL son:
o Comprobar si la sentencia se encuentra en el área compartida.
o Comprobar si los objetos referenciados son los mismos.
o Comprobar si el usuario tiene acceso a los objetos referenciados.
Si no, la sentencia es nueva, se analiza y los datos de análisis se almacenan en la zona de SQL compartida.
También se almacena en la zona de SQL compartido el caché del diccionario. La información sobre los objetos de la BD se encuentra almacenada en las tablas del diccionario. Cuando esta información se necesita, se leen las tablas del diccionario y su información se guarda en el caché del diccionario de la SGA.
Este caché también se administra mediante el algoritmo LRU. El tamaño del caché está gestionado internamente por el servidor, pero es parte del shared pool, cuyo manaño viene determinado por el parámetro SHARED_POOL_SIZE.
• EL REDO LOG BUFFER
o Los registros Redo describen los cámbios realizados en la BD y son escritos en los ficheros redo log para que puedan ser utilizados en las operaciones de recuperación hacia adelante, roll-forward, durante las recuperaciones de la BD. Pero antes de ser escritos en los ficheros redo log son escritos en un caché de la SGA llamado redo log buffer. El servidor escribe periódicamente los registros redo log en los ficheros redo log.
o El tamaño del buffer redo log se fija por el parámetro LOG_BUFFER.
Y tambien tiene 3 estructura secundarias :
• Streams pool
• Java pool
• Large pool
REFERENCIAS
http://www.infor.uva.es/~jvegas/cursos/bd/orarq/orarq.html#1.4.1
http://www.dba-oracle.com/concepts/sga_system_global_area.htm
http://www.adp-gmbh.ch/ora/concepts/sga.html
El área global del sistema (SGA) es un grupo de áreas de memoria compartida que se dedican a una instancia de "Oracle" (un ejemplo es su base de datos y programas de RAM).
Cada instancia Oracle requiere su área de memoria propia. Esta área de memoria se llama System Global Area o Shared Global Area(SGA). Si bien esta área de memoria es dedicada para la instancia, es compartida por todos los usuarios que se conectan a la base. Es decir que, desde el punto de vista de la instancia, la SGA es una área de memoria dedicada pues no se comparte con otras instancias. Desde el punto de vista de los usuarios que se conectan a la instancia, la SGA es un área de memoria compartida. El tamaño recomendable para una SGA = 50% de la memoria principal, para que el próximo acceso a los mismos sea más rápido.
La SGA está compuesta por tres estructuras principales:
• LA BUFFER CACHE
o Es el caché que almacena los bloques de datos leidos de los segmentos de datos de la BD, tales como tablas, índices y clusters. Los bloques modificados se llamas bloques sucios. El tamaño de buffer caché se fija por el parámetro DB_BLOCK_BUFFERS del fichero init.ora.
o Como el tamaño del buffer suele ser pequeño para almacenar todos los bloques de datos leidos, su gestión se hace mediante el algoritmo LRU.
• LA SHARED POOL
En esta zona se encuentran las sentencias SQL que han sido analizadas. El analisis sintáctico de las sentencias SQL lleva su tiempo y Oracle mantiene las estructuras asociadas a cada sentencia SQL analizada durante el tiempo que pueda para ver si puede reutilizarlas. Antes de analizar una sentencia SQL, Oracle mira a ver si encuentra otra sentencia exactamente igual en la zona de SQL compartido. Si es así, no la analiza y pasa directamente a ejecutar la que mantinene en memoria. De esta manera se premia la uniformidad en la programación de las aplicaciones. La igualdad se entiende que es lexicografica, espacios en blanco y variables incluidas. El contenido de la zona de SQL compartido es:
o Plan de ejecución de la sentencia SQL.
o Texto de la sentencia.
o Lista de objetos referenciados.
Los pasos de procesamiento de cada petición de análisis de una sentencia SQL son:
o Comprobar si la sentencia se encuentra en el área compartida.
o Comprobar si los objetos referenciados son los mismos.
o Comprobar si el usuario tiene acceso a los objetos referenciados.
Si no, la sentencia es nueva, se analiza y los datos de análisis se almacenan en la zona de SQL compartida.
También se almacena en la zona de SQL compartido el caché del diccionario. La información sobre los objetos de la BD se encuentra almacenada en las tablas del diccionario. Cuando esta información se necesita, se leen las tablas del diccionario y su información se guarda en el caché del diccionario de la SGA.
Este caché también se administra mediante el algoritmo LRU. El tamaño del caché está gestionado internamente por el servidor, pero es parte del shared pool, cuyo manaño viene determinado por el parámetro SHARED_POOL_SIZE.
• EL REDO LOG BUFFER
o Los registros Redo describen los cámbios realizados en la BD y son escritos en los ficheros redo log para que puedan ser utilizados en las operaciones de recuperación hacia adelante, roll-forward, durante las recuperaciones de la BD. Pero antes de ser escritos en los ficheros redo log son escritos en un caché de la SGA llamado redo log buffer. El servidor escribe periódicamente los registros redo log en los ficheros redo log.
o El tamaño del buffer redo log se fija por el parámetro LOG_BUFFER.
Y tambien tiene 3 estructura secundarias :
• Streams pool
• Java pool
• Large pool
REFERENCIAS
http://www.infor.uva.es/~jvegas/cursos/bd/orarq/orarq.html#1.4.1
http://www.dba-oracle.com/concepts/sga_system_global_area.htm
http://www.adp-gmbh.ch/ora/concepts/sga.html
No hay comentarios:
Publicar un comentario