SGA
Sirve para facilitar la transferencia de información entre usuarios y
también almacena la información estructural de la BD más frecuentemente
requerida.
La SGA se divide en varias partes:
Buffers de BD, Database Buffer Cache
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.
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.
Buffer Redo Log
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 registrosredo log en los
ficheros redo log.
El tamaño del buffer redo log se fija
por el parámetro LOG_BUFFER.
Área de SQL Compartido, Shared SQL 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:
- Plan de ejecución de la
sentencia SQL.
- Texto de la sentencia.
- Lista de objetos
referenciados.
Los pasos de procesamiento de cada
petición de análisis de una sentencia SQL son:
- Comprobar si la sentencia
se encuentra en el área compartida.
- Comprobar si los objetos
referenciados son los mismos.
- 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.
No hay comentarios:
Publicar un comentario