Está en la página 1de 46

Afinamiento SQL y PL/SQL para

Desarrolladores
Arquitectura de Base de Datos

1
Lo que Aprenderemos en este capítulo

• Componentes de la instancia de base de datos

• Estructuras de Memoria

• Procesos: usuario, servidores y background

• Estructura lógica: tablespaces, segmentos, extents, bloques

2
Arquitectura de la Base de Datos
Oracle 11g
Instancia
SGA
Server User
Procesos en Background Process Process

Base de Datos

Database Files

3
Instancia Oracle

Server PGA Server Proceso


Process 1 Process 2
PGA PGA
Background

System Global Area

Shared
Buffer Redo Pool
Cache Buffer

Large
Java Streams Pool
Fixed SGA Pool Pool

4
Estructuras de Memoria
q System Global Area (SGA) Proceso
Conjunto de estructuras compartidas de Background
PGA

memoria, que contienen datos e información


de control de la instancia de base de datos.

q Program Global Area (PGA) SGA


Regiones de memoria que contienen datos e
información de control de los procesos de
servidor o de background. La memoria PGA
es un área no compartida creada por Oracle Server
PGA Server
cuando se inicia un proceso servidor o Process 1 Process 2
PGA
background.

5
Componentes del SGA

q  Database Buffer Cache


q  Redo Log Buffer
q  Shared Pool
q  Large Pool
q  Java Pool
q  Streams Pool System Global Area

q  Fixed SGA Buffer


Cache
Redo
Buffer
Shared
Pool

Java Streams Large


Fixed
Pool Pool Pool
SGA

6
Database Buffer Cache

q  El database buffer cache contiene copias de los data


blocks leídos desde los datafiles.
q Todos los usuarios conectados a la instancia comparten el
acceso al database buffer cache.
q  Un buffer es un área de memoria principal en donde se
almacena temporalmente un bloque de datos

System Global Area

Buffer Shared
Redo Pool
Cache Buffer

Fixed Java Streams Large


SGA Pool Pool Pool

7
Organización del Database Buffer Cache

q  Los buffers en el cache están organizados en dos listas:


1.  Lista de escritura, que contiene los buffers con
datos modificados que no han sido escritos a disco
todavía.
2.  Lista de menos recientemente usados (LRU), que
contiene los buffers libres, los buffers pinned
(porque están siendo utilizados en el momento) y
los buffers dirty (pendientes de pasar a la lista de
escritura).

8
Organización del Database Buffer Cache

q  La primera vez que un user process requiere un dato, Oracle lo


busca en el buffer cache. Si lo encuentra, puede leer el dato
directamente de la memoria, de lo contrario, copia el dato desde el
disco al buffer en el cache.
q Antes de leer el bloque de datos , el proceso debe encontrar un
buffer libre. El proceso busca en la lista LRU, empezando por el
principio.
q Si el proceso encuentra un buffer dirty mientras recorre la lista
LRU, lo mueve a la lista de escritura y continua buscando.
q Cuando el proceso encuentra un buffer libre, lee el bloque desde
el disco al buffer y lo mueve al final de la lista LRU.

9
Organización del Database Buffer Cache

q  Si el proceso termina de recorrer la lista LRU sin encontrar


ningún buffer libre, el proceso envía un aviso al background
process DBW0 para que escriba algunos de los buffer dirty a
disco.
q  Cuando se está procesando un full table scan, los bloques que
se leen de la tabla se ponen al comienzo de la lista LRU (en lugar
de al final).
q Esto es así porque usualmente los full table scan solo se
requieren durante un período corto de tiempo, por lo que los
bloques del full table scan deben salir rápidamente de la lista para
dejar espacio a bloques que sean usados con mayor frecuencia.

10
Redo Log Buffer
q  El redo log buffer es un buffer circular que guarda
información acerca de los cambios hechos a la base de
datos.
q Esta información se almacena en redo entries.
q Los redo entries contienen la información necesaria para
reconstruir, o rehacer, los cambios hechos a la base de datos
por instrucciones DML o DDL.
System Global Area

Redo Shared
Buffer Pool
Cache Buffer

Java Streams Large


Pool Pool Pool

11
Redo Log Buffer
q Los procesos de la base de datos Oracle copian los redo entries del
espacio de memoria del usuario al redo log buffer.
q Los redo entries se escriben de forma secuencial en el buffer
q Luego el proceso LGWR escribe el redo log buffer al disco.
Shared Pool

q  El Shared Pool es el área de cache de distintos tipos de datos


de programa.
q  Por ejemplo, el shared pool almacena parsed SQL, PL/SQL,
parámetros del sistema, e información del diccionario de datos.
q  Participa en casi todas las operaciones que ocurren en la base
de datos.
q  Siempre que un usuario ejecuta una instrucción SQL, la base
de datos accede al Shared Pool.
System Global Area
Buffer Redo Shared
Cache Buffer Pool

Java Streams Large


Pool Pool Pool
Shared Pool
Shared Pool

Library Cache

Shared SQL Area Private SQL Area


- Parsed SQL Statements
- SQL Execution Plans (Shared Server Only)
- Parsed and Compiled PL/SQL Program Units

Data Dictionary Cache Server Result Cache Other Reserved Pool

Dictionary SQL Query


Data stored Result Cache
In Rows
PL/SQL Function
Result Cache
Tipos de Procesos
1. Procesos Cliente
–  Programas que requieren interacción con el servidor Oracle, y que
pueden estar en un servidor distinto del server de base de datos. No
acceden a la SGA.

2. Procesos Oracle
1. Procesos Background
Se inician con la instancia, llevan a cabo las tareas de mantenimiento de la
base de datos, como recuperación, escritura de redo buffers a disco,
cleaning up de procesos, etc.
2. Procesos de Servidor
Ejecutan trabajos de acuerdo a las solicitudes de los
procesos cliente. Por ejemplo, parse de SQL , lectura de
buffers del database buffer cache o del disco, crear y
ejecutar query plans.
Arquitectura de Procesos

Instancia

SGA PGA

Procesos en Background Server User


Process Process
PMON SMON DBWn LGWR

CKPT ARCn RECO Otros


Arquitectura de Procesos

1. User Process
–  Inician cuando un usuario de base de datos o un proceso batch se
conecta a la base de datos Oracle.

Server
2. Procesos de Base de Datos Process
User
Process

Procesos Background
Se inician con la instancia
Procesos en Background
Procesos de Servidor
Se conectan a la instancia, y PMON SMON DBWn LGWR
se inician cuando un usuario
establece una sesión CKPT ARCn RECO Otros
Procesos en Background

1. Process Monitor Process (PMON) Procesos en Background


2. System Monitor Process (SMON) PMON SMON DBWn LGWR

3. Database Writer Process (DBWn)


CKPT ARCn RECO Otros
4. Log Writer Process (LGWR)
5. Checkpoint Process (CKPT)
6. Archiver process (ARCn)
7. Recoverer Process (RECO)
8. Otros
Proceso de Consulta
1. El proceso de usuario envía la sentencia SQL al proceso servidor.
2. El proceso servidor busca la sentencia SQL en la Shared Pool. Si
no la encuentra, la compila y la guarda en la Shared Pool.
3. El proceso servidor accede a los datos en el Database Buffer
Cache. Si no los encuentra, accede directamente a los archivos de
datos, llevando los datos al Database Buffer Cache.
4. El proceso servidor devuelve los datos al proceso de usuario que
inició la conexión.

Mientras todo esto sucede, los otros procesos en background están


trabajando. Y el servidor atiende a otros usuarios mientras controla
la contención entre las transacciones que requieren acceso a la
misma información.
Proceso de Actualización

En primer lugar se repiten los pasos 1 (envío de la sentencia),


2 (compilación) y 3 (acceso a los datos) vistos en la consulta.

4. Se guarda una copia del dato (antes del cambio) en un


segmento de Rollback (por si se deshace la transacción).
5.  Se modifican los bloques de datos en el Database
Buffer Caché. El DBWR (de forma asíncrona) los llevará a los archivos
de datos cuando suceda un checkpoint.
6.  Se guardan en la caché de Redo las "redo entries"
(vector de cambios de cada bloque modificado) necesarias para
registrar el cambio que se va a hacer (el LGWR vuelca el buffer al
archivo redo log activo, cuando se hace commit o cada 3 segundos).
7.  El proceso servidor devuelve el número de filas actualizadas al
proceso de usuario.
Estructuras de Almacenamiento
en la base de datos Oracle
1. Estructuras físicas
• Data files y temp files
• Control files
• Online redo log files

2. Estructuras lógicas
• Tablespaces
• Segmentos
• Extents
• Bloques
Estructuras Físicas
q Controlfile
Ø  Una instancia de Oracle tiene un único controlfile.

Ø  Sin embargo, un buen DBA hace varias copias de ese


archivo por si se daña.
q Online Redo Log Files
Ø  Almacenan los cambios que se van haciendo en la base de

datos, se utilizan para la recuperación.


q Datafiles
Ø  Almacenan los datos de la base de datos, incluyendo el

diccionario de datos y la información de la aplicación


q Otros, de uso interno de la base de datos:
Ø  El archivo de parametros, el archivo de passwords, los
archivos redo log files, etc.
Estructuras Lógicas de
Almacenamiento
q Un administrador debe conocer las estructuras físicas y
lógicas.
q El programador trabaja con estructuras lógicas, como por
ejemplo, tablas.
q Una tabla tiene asociado:
Ø Filas con la información

Ø Indices. Son un mecanismo para acceder más rápidamente a

la información.
Ø Información de undo. Por si queremos que la tabla vuelva a

un estado anterior.
q Toda esta información, se guarda en segmentos.
Estructuras Lógicas de Almacenamiento

Lógico Físico

Tablespace   Data  File  

Segmento  

Extent  

Bloque  de  datos   Bloque  de  datos  


Oracle   S.O  
Estructuras Lógicas

Tablespaces
q Colección de segmentos.
q Almacenado físicamente en uno o más datafiles o
tempfiles.
q Tablespaces del sistema (SYSAUX, SYSTEM)
q Tablespaces UNDO
q Temporales TEMP Tablespace  

Segmento  
Estructuras Lógicas

Segmentos
q Colección de extents asignados a
un determinado objeto de la base
de datos como tablas, índices. Segmento  
q Tipos de segmentos:
- User
- Undo
- Temporal Extent  
Data blocks

q Un data block es la mínima unidad de I/O de


la base de datos.
q A nivel físico, los datos de la base de datos se
almacenan en archivos en disco, que se
componen de bloques del sistema operativo.
Estos bloques son la mínima unidad que el
OS puede leer o escribir.
q En contraste, un bloque Oracle es una
estructura lógica cuyo tamaño es
independiente del tamaño del bloque OS.
Quiz
 
1)  Cuales  de  los  siguientes  son  componentes  de  la  
arquitectura  Oracle?  
 
A.  Procesos  Background  
B.  Tablespaces  
C.  Datafiles  
D.  Todas  las  anteriores  
Quiz
 
1)  Cuales  de  los  siguientes  son  componentes  de  la  
arquitectura  Oracle?  
 
A.  Procesos  Background  
B.  Tablespaces  
C.  Datafiles  
D.  Todas  las  anteriores  
Quiz
 
2)  En  que  estructura  lógica  se  almacena  el  diccionario  de  la  
base  de  datos  ?  
 
A.  SYSTEM  tablespace  
B.  Stack  Space  
C.  Data  file  
D.  Ninguna  de  las  anteriores  
Quiz
 
2)  En  qué  estructura  lógica  se  almacena  el  diccionario  de  
la  base  de  datos  ?  
 
A.  SYSTEM  tablespace  
B.  Stack  Space  
C.  Data  file  
D.  Ninguna  de  las  anteriores  
Quiz
3)  Para  qué  se  usan  los  índices  ?  
 
A.  Leer  datos  de  manera  más  rápida  y  
eficiente  
B.  Los  datos  relacionados  requieran  
menos  I/O  
C.  Simplificar  la  percepción  del  usuario.  
D.  A  y  C  
Quiz
3)  Para  qué  se  usan  los  índices  ?  
 
A.  Leer  datos  de  manera  más  rápida  y  
eficiente  
B.  Los  datos  relacionados  requieran  
menos  I/O  
C.  Simplificar  la  percepción  del  usuario.  
D.  A  y  C  
Quiz
4)  El_________conSene  un  conjunto  de  tablas  y  vistas  
que  Oracle  usa  como  referencia  de  la  base  de  datos.  
 
 
A.  PGA  
B.  Library  cache  
C.  Data  dicSonary  
D.  SGA  
 
 
Quiz
4)  El_________conSene  un  conjunto  de  tablas  y  vistas  
que  Oracle  usa  como  referencia  de  la  base  de  datos.  
 
 
A.  PGA  
B.  Library  cache  
C.  Data  dicSonary  
D.  SGA  
 
 
Quiz
5)  Las  estructuras  de  memoria  básicas  en  Oracle  son  el  
System  Global  Area  (SGA)  y  Program  Global  Area  (PGA)  
 
A.  Verdadero  
B.  Falso  
 
 
 
Quiz
5)  Las  estructuras  de  memoria  básicas  en  Oracle  son  el  
System  Global  Area  (SGA)  y  Program  Global  Area  (PGA)  
 
A.  Verdadero  
B.  Falso  
 
 
 
Quiz
6)  Cual  es  la  uSlidad  más  probable  de  un  extent  ?  
 
A.  Almacenar  datos  dentro  de  la  base  de  
datos.  
B.  Almacenar  información  de  Rollback.  
C.  Minimizar  la  canSdad  de  almacenamiento  
desperdiciado.  
D.  A  y  C  
 
 
Quiz
6)  Cual  es  la  uSlidad  más  probable  de  un  extent  ?  
 
A.  Almacenar  datos  dentro  de  la  base  de  
datos.  
B.  Almacenar  información  de  Rollback.  
C.  Minimizar  la  canSdad  de  
almacenamiento  desperdiciado.  
D.  A  y  C  
 
 
Quiz
7)  Puede  haber  más  de  un  datafile  por  
tablespace  ?  
 
A.  Sí  
B.  No  
 
 
 
 
 
Quiz
7)  Puede  haber  más  de  un  datafile  por  
tablespace  ?  
 
A.  Sí  
B.  No  
 
 
 
 
 
Quiz

8)  Para  qué  se  usa  el  Library  Cache?  


 
A.  Almacena  los  datos  leidos  desde  el  disco    
B.  Usado  para  almacenar  shared  SQL  
C.  Registrar  los  cambios  hechos  a  la  base  de  datos  
D.  Todas  las  anteriores  
 
 
 
 
 
Quiz

8)  Para  qué  se  usa  el  Library  Cache?  


 
A.  Almacena  los  datos  leidos  desde  el  disco    
B.  Usado  para  almacenar  shared  SQL  
C.  Registrar  los  cambios  hechos  a  la  base  de  datos  
D.  Todas  las  anteriores  
 
 
 
 
 
Quiz

9)  Cual  es  la  unidad  mas  pequeña  de  almacenamiento  en  


una  base  de  datos  Oracle  ?  
 
A.  Data  Block  
B.  Segment  
C.  Extent  
D.  Data  file  
 
 
 
 
 
Quiz

9)  Cual  es  la  unidad  mas  pequeña  de  almacenamiento  en  


una  base  de  datos  Oracle  ?  
 
A.  Data  Block  
B.  Segment  
C.  Extent  
D.  Data  file  
 
 
 
 
 
Arquitectura de la Base de Datos
Oracle 11g
Instancia
SGA
Server User
Procesos en Background Process Process

Base de Datos

Database Files

46

También podría gustarte