Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
donde
era A op B. Ahora
...
1 2 3
( ) r
DEF: Selectividad es la probabilidad
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
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