Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Abd procesamiento consultas (parte 3)
1. Administración de Base de Datos
Procesamiento y Optimización
de Consultas
Prof Mercy Ospina Torres
mercy.ospinat@gmail.com
Prof Renny A. Hernandez
renny.hernandez@ciens.ucv.ve
2. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Contenido
Marzo 2012 Administración de Base de Datos 2
• Modelo de costos
– Factor de selectividad
– Costo de los operadores del Algebra Relacional
• Select
• Project.
• Join
• Order
• Árbol de ejecución físico
– Evaluar el árbol de ejecución físico.
• Materialización
• Encausamiento
Concurrencia
3. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Modelo de Costos
Marzo 2012 Administración de Base de Datos 3
• Es una herramienta estadística formal
para evaluar el costo de un plan físico de
ejecución.
• Se mide en función del tiempo y puede
expresarse en términos de:
– Accesos a disco
– Tiempo del CPU
– Costo de comunicación (Sist. Dist)
– Tiempo de respuesta para un plan de
evaluación de una consulta.
4. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Modelo de Costo
Marzo 2012 Administración de Base de Datos 4
¿Cuál es el costo más importante en las
bases de datos centralizadas?
Acceso a disco
5. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Marzo 2012 Administración de Base de Datos 5
• Para calcular el costo de acceso a disco
necesitamos.
– Tamaño a cada archivo de datos y vistas
• Número de registros
• Tamaño de los atributos y los registros
• Tamaño de los bloques
– Factor de selectividad
• Número de valores distintos,
• mínimo y máximo de los atributos de búsqueda,
– Métodos de acceso (organización del archivo)
– Índices del archivo
• números de niveles (altura)
• Tipo (primario, secundario, agrupado)
6. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Cálculo del espacio en disco
requerido por una relación
Marzo 2012 Administración de Base de Datos 6
1. Registros de longitud fija y no extensible
N: el número de registro del archivo A
Ra: el tamaño en bytes de cada registro
B: Tamaño en bytes de cada bloque
a
R
B
fdb
fdb
N
A
NumBloques )
(
Se usa para las tablas base
7. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Estimación de costos
Marzo 2012 Administración de Base de Datos 7
2. Extensibles / Tamaño Fijo
B
R
N
A
NumBloques a
)
(
Se usa para las tablas vista o resultados
intermedios
8. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Estimación de Costos
Marzo 2012 Administración de Base de Datos 8
4. Tamaño variable
se usan las mismas fórmulas pero se
calcula un promedio de tamaño del
registro
muestreo.
de
as
con técnic
A,
registro
un
de
promedio
tamaño
A
R
10. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Estimación de costos en
operaciones físicas: Selección
Marzo 2012 Administración de Base de Datos 10
• Operación Selección
Selección sin índices
Selección con índices
Selección de igualdad
Selección de comparación
Selecciones complejas (Conjuntivas o
Disyuntivas)
)
(R
condicion
11. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Selección sin índices
Marzo 2012 Administración de Base de Datos 11
• Considere una operación selección sobre
un archivo A y:
disco
a
acceso
de
tiempo
:
disco
de
bloques
en
A
relación
la
ocupa
que
tamaño
:
D
TBA
12. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Selección sin índices
Marzo 2012 Administración de Base de Datos 12
• Búsqueda lineal
A
A
TB
Costo
TB
Costo
:
clave
la
sobre
es
no
condición
la
Si
2
13. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Selección sin índice
Marzo 2012 Administración de Base de Datos 13
• Busqueda binaria
– Si el archivo se ordena según el atributo clave
y la condición es una igualdad.
– Si la selección no es de igualdad, o no es
sobre un atributo clave (y el archivo está
ordenado según éste atributo)
)
(
log2 A
TB
Costo
fs)
con
calculan
(se
condición
la
con
cumplen
que
bloques
de
Número
:
)
1
(
)
(
log2
f
f
A
TB
TB
TB
Costo
14. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Selección con índices
Marzo 2012 Administración de Base de Datos 14
• Existe un índice sobre alguno de los
atributos que forman la condición en la
consulta
– Select * from t1 where att1= v1 and att2= v2
• Asumimos que los índices son de tipo
árbol B+ y la longitud del camino es
siempre la altura del árbol.
15. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Selección de igualdad
Marzo 2012 Administración de Base de Datos 15
Select a1, a2, .. An
From t1, t2, … tm
Where a3=v1 and ...
• Índice primario
– Si se usa un índice primario es porque la
igualdad es sobre un atributo clave y solo
existe un valor posible
– Costo:
Se obtiene el número de niveles de índice (h) + 1
16. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Selección de igualdad
Marzo 2012 Administración de Base de Datos 16
• Índice agrupado
– Existen varios registros que cumplen la
condición y ellos están ordenados físicamente.
• Índice secundario
indexación
de
atributo
del
selección
de
ad
Cardinalid
:
)
,
(
cos
s
nr
R
c
fs
s
h
fdb
s
to
h
s
to
cos R
cond
fs
s *
)
(
Cantidad de
bloques que
ocupan los
registros
seleccionados
17. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Selección de comparación
Marzo 2012 Administración de Base de Datos 17
• Índice primario o agrupado
– Si la comparación es Att > v o Att ≥ v se
puede obtener el primer valor de v en el
archivo de datos, de allí se explora hasta el
final
– Si la comparación Att < v o Att ≤ v no es
necesario usar el índice.
h
fdb
s
to
cos
fdb
s
to
cos
18. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Selección de comparación
Marzo 2012 Administración de Base de Datos 18
• Índice primario o agrupado
– Si la comparación es Att > v o Att ≥ v se
puede obtener el primer valor de v en el
archivo de datos, de allí se explora hasta el
final
– Si la comparación Att < v o Att ≤ v no es
necesario usar el índice.
• Índice secundario
– Sólo es necesario hallar el primer apuntador a
v y recorrer la lista formada por las hojas para
obtener los apuntadores a los diferentes
bloques del archivo de datos.
19. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Selecciones complejas
Marzo 2012 Administración de Base de Datos 19
• Conjuntivas (c1 and c2)
- Índices Simples (índices diferentes por cada
atributo)
- Se verifica si hay un índice sobre alguno de los
atributos, se busca sobre éste y se verifica si
cumple las demás condiciones
- El más económico es el que tiene el fs más bajo
- Si hay un índice por cada atributo, se utilizan los
distintos índices, se recuperan los elementos y
luego se interceptan los tres conjuntos
obtenidos.
20. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Selecciones Complejas
Marzo 2012 Administración de Base de Datos 20
• Conjuntivas (Cont)
• Índices Compuestos
• Sólo puede utilizarse si cada uno de los
atributos están en la condición de selección
• El tipo de índice determina el uso de algoritmos
de selección simples
• Disyuntiva (c1 or c2)
– Se realiza una búsqueda y se realiza la unión
de éstas.
– El hecho de que un sólo atributo no tenga
índice implica una búsqueda lineal de datos.
21. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Operación Proyección
Marzo 2012 Administración de Base de Datos 21
• Con duplicados
For each tupla t in B
Guardar en B’ < t.At1, t.At2, …, t.Ati >
End
Resultado tabla o relación con registros
duplicados
• Costo = TBB (recorrer la tabla B)
• Costo de almacenamiento
– TBB’ (guardar la tabla proyectada)
B
B’
22. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Operación Proyección
Marzo 2012 Administración de Base de Datos 22
• Sin duplicados
• Basado en ordenamiento
For each tupla t in B
Guardar en B’ < t.At1, t.At2, …, t.Ati >
End
Ordenar B’ en base a los atributos de proyección
For each tupla t in B’
Guardar t en B’’ sii no existe t en B’’
End
Resultado tabla o relación donde los duplicados
son eliminados
23. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Operación Proyección
Marzo 2012 Administración de Base de Datos 23
• Costo de proyección
• Costo de almacenamiento
)
log( '
'
' B
B
B
B TB
TB
TB
TB
Recorrer B
Generar B’
Ordenar B’
'
'
B
TB Tabla proyectada sin duplicados
24. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Operación Proyección
Marzo 2012 Administración de Base de Datos 24
• Basado en HASH
Se crea B’
For each tupla tj in B’
Aplicar f(tj) #se contruye una tabla hash
en mp
si tupla tj en f(ti) / ti = tj
Descartar ti
sino
Guardar ti en f(ti)
fsi
Retornar tuplas en tabla hash
end
25. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Operación Proyección
Marzo 2012 Administración de Base de Datos 25
• Basado en HASH (costo)
– Suponiendo que
– se puede almacenar en la tabla hash
Sino
Aunque este costo puede ser menor que el de
ordenamiento, requiere memoria principal
+ Costo de almacenar B’’
'
'
3 B
B
B
B
TB
TB
TB
TB
B
26. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Operación Join
Marzo 2012 Administración de Base de Datos 26
• El operador Join se puede evaluar de
varias maneras distintas
– Nested loop join
– Block Nested Loop Join
– Merge sort join
– Index Join
– Hash Join
27. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Nested Loop Join
Marzo 2012 Administración de Base de Datos 27
For each tupla tA in A
For each tupla tB in B
If satisfy (tA, tB, Cond)
Return (tA. tB)
End
End
End
Costo = TBA + RA*TBB
RA = cantidad de
registro de A
28. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Block Nested Loop Join
Marzo 2012 Administración de Base de Datos 28
Este algorito se puede mejorar si se aprovechan los
bloques de memoria disponibles
Si se carga A por bloques el costo seria
Costo = TBA + TBA*TBB
Si se tienen T bloques disponibles se dejan dos para
entrada/salida
A B
B
A
A *TB
T-
TB
TB
Costo
2
29. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Sort-Merge Join
Marzo 2012 Administración de Base de Datos 29
Si ambas tablas están ordenadas sobre los atributos
del Join, el costo es el menor
Costo = TBA + TBB
Si no hay que agregar el costo de ordenación
Costo = TBA Log(TBA )+ TBB Log(TBB ) +TBA +TBB
A B
30. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Index Join
Marzo 2012 Administración de Base de Datos 30
Se usa si la tabla de la derecha tiene un índice sobre el
atributo del Join, el costo es el de leer A y buscar cada
registro de A por el índice
Costo = TB(A) + CostoBuscar*Ra
El costo de buscar depende del indice (ver operador
select)
A B
31. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Hash Join
Marzo 2012 Administración de Base de Datos 31
• Se dividen las tuplas de cada relación
utilizando una función hash tal que:
)
(
)
(
.
.
)
,
(
)
,
(
/
, b
a
b
a
b
a t
h
t
h
e
i
t
B
part
t
A
part
B
t
A
t
32. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Hash Join
Marzo 2012 Administración de Base de Datos 32
• h es una función que asigna a los atributos de join
los valores {0,1,..,n-1}
• Ha0 .. Ha(n-1) denota las particiones de A
inicialmente vacías. Se colocan las tuplas en Hai
con i = h(ta[atributos join])
• Hb0 .. Hb(n-1) denota las particiones de B
inicialmente vacías. Se colocan las tuplas en Hbi
con i = h(tb[atributos join])
• Al aplicar la misma función para ambos
particionamientos, cada tupla de A y B que tengan
resultados iguales de la función de asociación,
estarán en la misma partición
35. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Calcular el costo de un árbol
de ejecución
Marzo 2012 Administración de Base de Datos 35
• Una vez que el árbol este optimizado
– Se cambian los operadores lógicos por físicos
p.e join por index join
– Si hay mas de un operador posible se debe
verificar el menos costoso
– Se calculan los costos de las operaciones por
nodo, y el costo de almacenar resultados
intermedios
– Se suman los costos de todos los nodos
36. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Ejercicio
Marzo 2012 Administración de Base de Datos 36
Jugador (DI, Nombre, Apellidos,
FechaNac, Direccion)
DI: 9 bytes
Nombre: 40 bytes
Apellidos: 40 bytes
FechaNac: 8 bytes
Direccion: 50 bytes
Num registros: 250.000
Equipo( CodEq, NombreEq, FechaFund,
Ciudad, Liga, Estadio)
CodEq: 4 bytes
NombreEq: 40 bytes
FechaFund: 8 bytes
Liga: 2 bytes (Nacional =0, Americana=1)
Estadio: 50 bytes
Num registros: 30
Juegos(CodEq1, CodEq2, Temporada,
Fecha, Resultado, CodEquipoGana)
CodEq1: 4 bytes
CodEq2: 4 bytes
Temporada: 4 bytes, min : 1902, máximo
2011, valores diferentes, 110
Fecha: 8 bytes (162 valores distintos)
Resultado: 8 bytes
CodEquipoGana: 4 bytes (INDICE)
Num registros: 18.000
Juega (DIJugador, CodEq, FechaIni,
FechaFin, Posicion)
DIJugador: 9 bytes
CodEq: 4 bytes
FechaIni: 8 bytes (un promedio de 20 jug
por año)
FechaFin: 10 bytes
Posición: 20 bytes (9 valores distintos)
Num registros: 875.000
37. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Marzo 2012 Administración de Base de Datos 37
• Consulta: Nombre, apellido y equipo de
los jugadores que han participado en la
temporada 2009 en juegos ganados, y
que han jugado en primera base.
– Dé el árbol canónico para q.
– Dé el árbol optimizado heurísticamente.
38. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Marzo 2012 Administración de Base de Datos 38
• Suponga que el SMBD se caracteriza por
– Disponer de 20 bloques de memoria principal
para las operaciones AR
– Cada bloque ocupa 1024 bytes
– Disponer de los operadores físicos vistos en
clase
– Materializar los resultados intermedios. Asuma
registros fijos extensibles para las tablas
intermedias y no extensibles para las relaciones
base
– Indices primarios para las claves primarias,
todos tienen 4 de altura
39. El DBA
Concurrencia
Diccionario Datos
Integridad
Seguridad
Proc. Consultas
El SMBD
Manejo de Memoria
Restauración
Ejemplo de plan de ejecución
Caso Oracle
Marzo 2012 Administración de Base de Datos 39
SELECT e.employee_id, e.last_name, e.salary,
d.department_name, l.city
FROM employees e, departments d, locations l
WHERE e.department_id = d.department_id
AND d.location_id = l.location_id
AND l.city = 'Oxford'
AND e.salary > 10500 AND e.last_name LIKE '%e%';
40. Ejemplo de plan de ejecución
Caso Oracle
Marzo 2012 Administración de Base de Datos 40
Búsqueda
usando
índice