Sei sulla pagina 1di 11

Tema: Procesamiento de Consultas

BASES DE DATOS


Guin Tema 5:

Pr ocesami ent o de Consul t as



Profesor : Hctor Gmez Gaucha
Tema: Procesamiento de Consultas Hctor Gmez Gaucha (2005/2006) 1
Tema: Procesamiento de Consultas
1 1. . C Ci i c cl l o o d de el l P Pr ro oc ce es so o d de e u un na a C Co on ns su ul l t ta a
(se ver ms adelante)
2 2. . O Op pt t i i m mi i z za ac ci i n n M M t t r ri i c ca a: : e es st t i i m ma ac ci i n n d de el l c co os st t e e

MEDIDAS DE COSTE
- El SGBD tiene algoritmos distintos para las consultas en A.R. segn el mtodo de acceso
que pueda aplicar (secuencial, ndice primario, ndice secundario)
- ALGORITMO: Se interpreta la consulta para decidir qu funciones se tienen que hacer. Hay
algoritmos alternativos, cada uno tiene un rendimiento mejor segn las caractersticas de la
situacin.
- CRITERIO: El coste ms importante es el nmero de transferencias de bloques de disco.
- OBJ ETIVO: Encontrar el mtodo de acceso de menor coste en cada operacin

2.1 Informacin til en el catlogo y Medidas de Coste
RELACIONES: r
nr nmero de tuplas en la relacin r
br nmero de bloques con tuplas de r
tr tamao (bytes) de una tupla de r
fr factor de bloqueo de r (nm. tuplas de r en un bloque)
V(A,r) nmero de valores distintos del atributo A en r (tamao de

(r) )
si A es clave , entonces V(A,r) ser nr
CS(A,r) cardinalidad de seleccin del atributo A:
Nmero de tuplas seleccionadas usando condicin igualdad =
CS(A,r) = 1 si A es clave
Se asume distribucin uniforme: CS(A,r) = ( nr / V(A,r) )
CS(A, r) y V(A , r) el mismo concepto para un conjunto de atributos A

Se cumple que br =
nr
fr




INDICES: i
gi grado de salida: nmero de punteros en un nodo del rbol B
+

fi factor de bloqueo del fichero de ndices
AAi = nmero de niveles del ndice i log ( ( , ))
fi
V A r

Mbi nmero de bloques de ndices en el nivel de hoja


Se estudiar el coste estimado de cada algoritmo: E
A
Tema: Procesamiento de Consultas Hctor Gmez Gaucha (2005/2006) 2
Tema: Procesamiento de Consultas
2.2 Operacin Seleccin
A1. Bsqueda Lineal (fuerza bruta)
Situacin:
- Condicin en atributo no clave y no ordenada por ese atributo
Algoritmo: Recorre toda la tabla, comprueba condicin en cada tupla
Coste: E
A1
=br lee todos los bloques
Ejemplo: select *
from cliente
where telefono <910000000;
Datos necesarios: buscar un telefono en la tabla cliente
fcliente=10 clientes/bloque, V(telefono, cliente) =79.000, ncliente =80.000 tuplas


A2. Bsqueda binaria
Situacin:
- Condicin con el atributo por el que est ordenada (varias filas con igual valor)
- Condicin : comparacin de igualdad
Algoritmo: Recorre la tabla con bsqueda dicotmica, no usa el rbol B+de ndices
Coste: E
A2
=
2
( , )
log ( ) 1
CS A r
br
fr

+




Encontrar la 1 + num. Bloques satisfacen cond =
Bsqueda binaria (bloques) cardinal./bloqueo 1 tupla
Si atrib. condicin es clave primaria: CS(A,r) =1 y queda E
A2
=
2
log ( ) br

Ejemplo: Asumiendo que tenemos compras ordenada por tienda.
select *
from compras
where tienda =u2x;
- Datos necesarios:
fcompras=3 filas/bloque, V(tienda, compras) =3.000 posibles tiendas,
ncompras =90.000 tuplas
Ejemplo: aplicar el algoritmo necesario para estimar el coste de esta operacin:
Ahora : Asumimos que est ordenada por telefono (con los datos del apartado A1)
select *
from cliente
where telefono =123456789;

Tema: Procesamiento de Consultas Hctor Gmez Gaucha (2005/2006) 3
Tema: Procesamiento de Consultas
A3. Bsqueda con ndices (situacin 1)
Situacin:
- Condicin: usa atributo/s que es/son clave primaria(el ndice primario)
- Condicin : comparacin de igualdad
Algoritmo: recupera tantos bloques como niveles de ndices (AAi), ms el bloque que
contiene la tupla buscada
Coste: E
A3
= AAi +1 = log ( ( , )) 1
fi
V A r +


Ejemplo: select *
from compras
where DNI=123456789 and NumT =56 and NumF =8;
- Datos necesarios: (los mismos) tabla Compras
fcompras =3 filas/bloque, V(tienda, compras) =3.000 posibles tiendas,
ncompras =90.000 tuplas ficompras =3 ndices/bloque
Coste:
Ejemplo: usando los datos dados en A1, aplicar el algoritmo necesario para estimar el
coste de esta operacin:
select *
from cliente
where dni =123456789;

A4. Bsqueda con ndices (situacin 2)
Situacin:
- Hay ndice primario
- Condicin : comparacin de igualdad de un atributo NO clave
Algoritmo: Recorre secuencialmente la tabla usando el ndice (lee AAi bloques), ms el
nmero de tuplas con ese valor ( CS(A, r) )
Coste: Total de accesos:
Cuantas tuplas cumplen la condicin? CS(A,r)
Cuantos bloques accedidos
( , ) CS A r
fr



(cardinalidad /bloqueo)
E
A4
= AAi +
( , ) CS A r
fr

AAi = log ( ( , ))
fi
V A r

como antes en A3
Ejemplo: select *
from compras
where tienda=u2x;
- Datos necesarios: (los mismos de A2) tabla Compras
Tema: Procesamiento de Consultas Hctor Gmez Gaucha (2005/2006) 4
Tema: Procesamiento de Consultas
Coste: Total de accesos:
E
A4
= AAi +
( , ) CS A r
fr

=11 +30 /3 =21 (se podra esperar menos?)


Influye el CS y el fr
Ejemplo: aplicar el algoritmo necesario para estimar el coste de esta operacin
select *
from cliente
where telefono =123456789;

2.3 Operacin Seleccin Compuesta
En seccin anterior: ( ) r

donde

era A op B. Ahora
...
1 2 3
( ) r



DEF: Selectividad es la probabilidad
i
P

=ti / nr de que una tupla cumpla la condicin


i

donde el tamao de la seleccin es ti = ( )
i
r

tuplas que satisfacen la condicin


i

y nr el nmero de tuplas en la relacin. Tambin tamao =
Criterio de optimizacin: Selectividad
Se buscan las selecciones de menor tamao, o menor selectividad(la es ms selectiva)
Dependiendo de qu mtodos de accesos tiene esa relacin
Ejemplo: Condicin de igualdad, ser: a) si select la clave ,
i
P

= 1 / nr
b) si select A con CS valores diferentes,
(por distribucin uniforme de valores)
i
P

=
/ ( , ) 1
( , )
nr V A r
nr V A r
=
Conjuncin
...
1 2
( )
n
r


tamao =nr * selectividad
Selectividad =
1 2
1 2 1 2
* *...*
* *...* ( ) * ....
n
n
n
r r r
t t t t t
P P P r
n n n

= =

Disyuncin
...
1 2
( )
n
r


tamao =nr * selectividad



1 2
Selectividad =1 ( ) 1 (1 )*(1 )*...*(1 )
n
r r
t t t
P ninguna
n n
=
r
n


Negacin
( ) r


tamao =nr tamao de ( ) r


Selectividad =1 selectividad ( ) r

(tuplas que si estan)


ALGORITMOS: para cada operacin seleccin individual se aplican los algoritmos ya vistos
(r) puede ser el resultado de otra operacin

Tema: Procesamiento de Consultas Hctor Gmez Gaucha (2005/2006) 5
Tema: Procesamiento de Consultas
2.4 Operacines de re-unin
Es la operacin que ms recursos consume. Tres tipos: (los dos primeros se tratan igual)
- Natural R S
- Theta: R
A1 COND A2
S (tambin se usa R
A1 COND A2
S)
- Producto Cartesiano R x S

DOS CRITERIOS:
1. Criterio: Minimizar el tamao del resultado (nmero de tuplas)
Estimacin del tamao: Mnimo nmero de bloques en uso E
Ai
. Dadas dos relaciones r y s,
con sus esquemas R y S hay varios casos: (cada tupla tiene todos los atributos de ambas)
a)- sin atributos comunes: la operacin es r x s. Tamao T R S =
r X s
=nr * ns
b)- R S = clave de r y de s : cada tupla de r se relaciona con solo una de la otra s,
tamao mximo T
r s
es el nr ( ns) la de menos tuplas.
c)- R S = clave de r y no de s : asumiendo distribucin uniforme de valores V(X, s)
Cada tupla de r produce ns / V(X,s) tuplas
para todas de r produce T
r

s
=nr * (ns / V(X,s) ) tuplas
d)- R S = no clave ni e r ni en s : Se contemplan las dos situaciones:
T
r

s
=nr * (ns / V(X,s) ) y T
r

s
=ns * (nr / V(X,r) )
El mejor ser el de la seleccin mnima
Conclusiones: Evitar las R S caras. Las magnitudes de las tres son muy diferentes.(H6.2a)

2 Criterio: Minimizar el coste del algoritmo.
Hay varios factores de coste.
Estos son algoritmos simplificados que solo tienen en cuenta el coste ms importante:
El acceso al disco al leer un bloque.
Depende de si se procesa tupla a tupla, bloque a bloque, con ndice o sin ndice.

ALGORITMOS (que implementan re-uniones)
A10. En Bucle Anidado (fuerza bruta)
Situacin:
- Proceso tupla a tupla
- Sin ndices
- [opcional: hay atributos comunes , condicin de reunin de igualdad]
Algoritmo: Para cada tupla en r (bucle exterior):
Se recorre s (bucle interior) para obtener todas las tuplas
[ y comprobar si cumplen la condicin de reunin si la hay]
Tema: Procesamiento de Consultas Hctor Gmez Gaucha (2005/2006) 6
Tema: Procesamiento de Consultas
Coste: Total de accesos: dos bucles anidado (r x s ciclos)
E
A10
= br +nr * bs
Tambin depende de otros factores: T estimado, si s cabe en memoria

A11. En Bucle Anidado (por bloques)
Situacin:
- Proceso bloque a bloque
- Sin ndices
- [opcional: hay atributos comunes , condicin de reunin de igualdad]
Algoritmo: Para cada bloque Br :
Para cada bloque Bs :
Para cada tupla tr en Br :
Para cada tupla ts en Bs
Se recorre s (bucle interior) para obtener todas las tuplas
[ y comprobar si tr y ts cumplen la condicin de reunin si la hay]
Coste: Total de accesos: dos bucles anidado (r x s ciclos)
E
A11
= br +br * bs
Tambin depende de otros factores: T estimado, si s cabe en memoria
Conclusin: escoge la relacin con menos bloques para ser externa
A12. En Bucle Anidado (con ndices)
Situacin:
- Proceso tupla a tupla
- Relaciones con ndices en el atributo de reunin:
a) solo en una relacin
b) en las dos
Algoritmo: Para cada tupla en r (bulce exterior): br accesos a disco
Bsqueda con ndice en s nr * E
COND
(A3 ~A7 selecc)
Las que cumplan la condicin de reunin
Coste: Total de accesos: dos bucles anidado (r x s ciclos)
E
A12
= br +nr * E
COND

Tambin depende de otros factores: T estimado, si s cabe en memoria
Conclusin:
a) escoge esa como interna
b) coge aquella con menos tuplas como externa
Ejemplo: H6P3
Tema: Procesamiento de Consultas Hctor Gmez Gaucha (2005/2006) 7
Tema: Procesamiento de Consultas

2.5 Operacin re-unin Compuesta (usamos el signo

)
Misma idea que la seleccin compuesta:
Conjuncin: 1 2 ... 1 2 3
(( ) ) ...
n
r s r s

=
Orden de ejecucin: 1 Unin, 2 tuplas de 1relacin que cumplen
1

, y
3 tuplas de 1relacin que cumplen
2


Disyuncin: elimina duplicados 1 2 ... 1 2
( ) ( ) ...
n
r s r s r s

=
Tema: Procesamiento de Consultas Hctor Gmez Gaucha (2005/2006) 8
Tema: Procesamiento de Consultas

3 3 O Op pt t i i m mi i z za ac ci i n n H He eu ur r s st t i i c ca a : : e ex xp pr r e es si i o on ne es s r re el l a ac ci i o on na al l e es s
- Para optimicacin hemos visto medidas de coste basadas en estimacin del coste.
- Otro modo es con transformaciones de las expresiones A.R basadas en reglas heursticas para
- Obtener otras expresiones mejores: menos tuplas, menos atributos, algoritmos con coste menor
- Estos dos mtodos combinados son los que usa el Optimizador para elegir el plan de ejecucin
(o evaluacin) definitivo.
3.4 Evaluacin de Expresiones Relacionales
- Se evalua por separado cada operacin en un orden optimizado. Tres modos:
Materializacin: el resultado de cada operacin se graba como tabla temporal (con su coste)
Encauzamiento: el resultado de cada operacin se pasa a la siguiente directamente (memoria)
Combinando los dos modos anteriores durante la evaluacin.
3.5 Transformacin de Expresiones Relacionales
Una consulta se puede ejecutar con varias expresiones A.R. equivalentes, con coste diferente.
Dos modos: Se puede hacer una estimacin del coste o seguir reglas heursticas.
3.6 Reglas de Equivalencia. Algoritmo de Optimizacin
Basandose en reglas de equivalencia se define este ALGORITMO:
Ejecutar seleccin primero
Paso 1: Para selecciones con condiciones conjuntivas
...
1 2
( )
n
r


: generar selecciones con
condiciones simples en secuencia. Disyuntivas sobre tablas distintas en dos rboles.
Paso 2: Ejecutar primero las selecciones: bajandolas en el rbol (usa conmutativa y distributiva)
Ejecutar las operaciones que reducen tamao de resultado
Paso 3: Encontrar selecciones y uniones ms selectivas (dan menos tuplas): bajarlas en el bol
para ejecutarlas con las relaciones de las hojas.
Paso 4: Cambiar (seleccin +prod. Cartesiano) por theta unin
Paso 5: Deshacer Proyecciones con lista atributos en varias proyecciones con un atributo y
bajarlas en el rbol.
[ Optimizar algoritmo
Paso 6: Identificar subrboles cuyas operaciones se pueden ejecutar en un solo algoritmo Ai ]
Tema: Procesamiento de Consultas Hctor Gmez Gaucha (2005/2006) 9
Tema: Procesamiento de Consultas

4 4 O Op pt t i i m mi i z za ac ci i n n i i m mp pl l e em me en nt ta ad da a e en n O Or ra ac cl l e e
4.4 Utilidades de Medida y Anlisis: ANALIZE, TKPROF, EXPLAIN, VALIDATE
Smine,H. Oracle: arquitectura, administracin y optimizacin, 1991, Diaz de Santos
4.4.1 ANALIZE
- Activa Estadsticas Fsicas de tablas e ndices (para el Clculo de Costes)
- Oracle puede usar estadsticas para escoger el plan de ejecucin de la instruccin SQL
ANALYZE {TABLE nombr eTabl a
{{COMPUTE | ESTI MATE | DELETE} STATI STI CS}
[ SAMPLE { n per cent | n r ows}]
VALI DATE STRUCTURE [ CASCADE] . . .
}
[ { FOR TABLE | FOR ALL [ i ndexed] COLUMNS|
FOR COLUMNS nombr eAt r i but o} ] ;
Ejemplo 1: analyze table cliente compute statistics for columns direccion;
Ejemplo 2: analyze table cliente validate structure cascade; (cascade : tambin ndices)

- RESULTADOS del ANALYZE: (estn en ALL_TABLES, USER_TABLES, DBA_TABLES)
nr nmero de filas, br nmero de bloques(asignados y ocupados), tamaos (medias) de fila
(ndices) AAi nmero de niveles, bi bloques hoja, V(A,r) valores diferentes, tamaos (medias)

4.4.2 TKPROF
- Estadsticas en tiempo de ejecucin. Almacena la traza en un fichero
- Pasos: 1.- activar la traza (el DBA)
2.- activar traza para la sesin : alter session set sql_trace =true
el nombre de fichero ser : nombre utilidad_instanciaDB_Num.TRC
3.- Ejecutar las instrucciones SQL a evaluar
4.- Extraer estadsticas desde la traza:
TKPROF <f i cher o t r aza> <f i cher o t ext o sal i da>
[ EXPLAI N user _i d/ passwor d]
- Resultados: para parsing (anlisis sint. y calculos costes), ejecute (sql), fetch (leer filas)
contar, tiempo respuesta cpu, bloques recuperados, filas tratadas,...
4.4.3 EXPLAIN
- Genera el plan de ejecucin en la tabla PLAN_TABLE
4.4.4 VALIDATE
- Analiza un ndice: valores y cuantas veces estan repetidos
Tema: Procesamiento de Consultas Hctor Gmez Gaucha (2005/2006) 10
Tema: Procesamiento de Consultas
4.5 Reglas Optimizacin en ORACLE para Seleccin
El optimizador las tiene en cuenta antes de generar el plan de ejecucin:
1.- El ndice no se usa si la columna ndice est dentro de una expresin o funcin
2.- El ndice no se usa si la columna ndice se compara is null (arreglo? =valor nulo)
3.- El ndice no se usa si la columna ndice se compara con distinto !=, not =
4.- El ndice no se usa si la columna ndice se compara con % algo
5.- El ndice se usa en ordenacin si est como NOT NULL y no hay otros ndices aplicables.
6.- En una conjucin puede usar hasta 5 ndices. Si uno es nico solo usa ese.
7.- Si hay disyuncin, oracle descompone en varias instrucciones seleccin.
8.- Combinacin de dos tablas (algoritmos explicados anteriormente) con una columna comn:
-a- Las columnas comunes no tienen ndices: !! muy costosa !!
-b- Una de las dos columnas tiene ndice:
- Recorre secuencialmente la tabla sin ndice de la consulta
-c- Las dos tienen ndices:
- Recorre secuencialmente la tabla ltima del from (poner la ms pequea)
-d- Si tiene una condicin, hay una prioridad segn el tipo de columna usada (ndice, max,...)
4.6 Eleccin de ndices
- Para evitar estos recorridos secuenciales en las consultas
- NO crear ndices en columnas: - Se modifiquen frecuentemente - Con pocos valores diferentes
- SI crear ndices cuando las columnas son:
- Claves primarias (oracle por defecto las crea) : si son muchos atributos crear otro.
- Claves ajenas, aceleran las uniones
- Que sirven de bsquedas
- Que sirven de criterio de ordenacin o agrupacin.

1. Ciclo del proceso de una consulta


Anlisis lexicogrfico (palabras SQL correctas)
Anlisis sintctico (cumple reglas gramtica SQL)
Validacin semntica (nombres atrib y relaciones,..)
Generar rbol de
Consulta (en A.R.)
Consulta
SQL
OPTIMIZADOR:
Genera planes:
- qu expresin
- qu algoritmo para
cada operacin
- en qu orden cada op.
Escoge el mejor
MOTOR evaluacion
Ejecuta el plan
Da el Resultado de la consulta
Tema: Procesamiento de Consultas Hctor Gmez Gaucha (2005/2006) 11

Potrebbero piacerti anche