of 15 /15
7.- Procesamiento y optimización de consultas Los SGBD procesan, optimizan y ejecutan las consultas de alto nivel, utilizando técnicas y algoritmos. Cuando se tiene una consulta en SQL, ésta debe ser analizada léxica y sintácticamente, luego validada. EL analizador léxico identifica los componentes del lenguaje en el texto de la consulta, el analizador sintáctico revisa la sintaxis de la consulta para determinar si está formulada de acuerdo a las reglas sintácticas del lenguaje de consulta. La validación consiste en comprobar que todos los nombres de los atributos y de relaciones sean válidos. A continuación se crea una representación interna de la consulta, por lo regular en forma de estructura de datos de árbol o grafo. Esto se denomina árbol o grafo de consulta. En seguida, el SGBD debe crear una estrategia de ejecución para obtener el resultado de la consulta a partir de los archivos internos de la base de datos. Por lo general, una consulta tiene muchas posibles estrategias de ejecución, y el proceso de elegir la más adecuada se conoce como optimización de consultas. El módulo optimizador de consultas se encarga de producir un plan de ejecución y el generador de código genera el código necesario para ejecutarlo. El procesador de base de datos en tiempo de ejecución se encarga de ejecutar el código de la consulta, sea compilado o interpretado, para producir el resultado de la consulta. El optimizador en realidad no escoge siempre el plan más óptimo, ya que encontrar la estrategia óptima pude consumir mucho tiempo. Solo escoge una estrategia razonablemente eficiente. Algoritmos de optimización y procesamiento de consultas Algoritmos para ordenación externa La ordenación es uno de los algoritmos principales utilizados en el procesamiento de las consultas, Por ejemplo, siempre que en una consulta SQL se especifique una cláusula ORDER BY, el resultado de la consulta debe ser ordenado. La ordenación es también un componente clave en los algoritmos de ordenación y mezclado utilizados en las operaciones de JOIN y en algunas otras (como UNION y INTERSECTION), y en los algoritmos de eliminación de duplicados de la operación PROYECTO (cuando en una consulta SQL se especifica la opción DISTINCT en la cláusula SELECT). Es posible evitar la ordenación si existe el índice adecuado que permita un acceso ordenado a los registros.

optimizacion consultas

Embed Size (px)

Text of optimizacion consultas

7.- Procesamiento y optimizacin de consultas Los SGBD procesan, optimizan y ejecutan las consultas de alto nivel, utilizando tcnicas y algoritmos. Cuando se tiene una consulta en SQL, sta debe ser analizada lxica y sintcticamente, luego validada. EL analizador lxico identifica los componentes del lenguaje en el texto de la consulta, el analizador sintctico revisa la sintaxis de la consulta para determinar si est formulada de acuerdo a las reglas sintcticas del lenguaje de consulta. La validacin consiste en comprobar que todos los nombres de los atributos y de relaciones sean vlidos. A continuacin se crea una representacin interna de la consulta, por lo regular en forma de estructura de datos de rbol o grafo. Esto se denomina rbol o grafo de consulta. En seguida, el SGBD debe crear una estrategia de ejecucin para obtener el resultado de la consulta a partir de los archivos internos de la base de datos. Por lo general, una consulta tiene muchas posibles estrategias de ejecucin, y el proceso de elegir la ms adecuada se conoce como optimizacin de consultas. El mdulo optimizador de consultas se encarga de producir un plan de ejecucin y el generador de cdigo genera el cdigo necesario para ejecutarlo. El procesador de base de datos en tiempo de ejecucin se encarga de ejecutar el cdigo de la consulta, sea compilado o interpretado, para producir el resultado de la consulta. El optimizador en realidad no escoge siempre el plan ms ptimo, ya que encontrar la estrategia ptima pude consumir mucho tiempo. Solo escoge una estrategia razonablemente eficiente.

Algoritmos de optimizacin y procesamiento de consultas Algoritmos para ordenacin externa La ordenacin es uno de los algoritmos principales utilizados en el procesamiento de las consultas, Por ejemplo, siempre que en una consulta SQL se especifique una clusula ORDER BY, el resultado de la consulta debe ser ordenado. La ordenacin es tambin un componente clave en los algoritmos de ordenacin y mezclado utilizados en las operaciones de JOIN y en algunas otras (como UNION y INTERSECTION), y en los algoritmos de eliminacin de duplicados de la operacin PROYECTO (cuando en una consulta SQL se especifica la opcin DISTINCT en la clusula SELECT). Es posible evitar la ordenacin si existe el ndice adecuado que permita un acceso ordenado a los registros. La ordenacin externa tiene relacin con los algoritmos de ordenacin que son adecuados para los ficheros de tamao grande con registros almacenados en disco que no caben en su totalidad en la memoria principal, como sucede con la mayora de los ficheros de bases de datos. El algoritmo de ordenacin externa ms habitual es el que utiliza una estrategia de ordenacin-mezcla, que comienza con la ordenacin de pequeos subficheros (denominados porciones) del fichero principal y, a continuacin, mezcla esos subficheros ordenados para crear subficheros ordenados ms grandes que, a su vez, sern mezclados nuevamente. El algoritmo de ordenacin-mezcla, al igual que los algoritmos de bases de datos, necesita de un espacio temporal en memoria principal donde se realiza la ordenacin y la mezcla de las porciones. Durante la fase de ordenacin, las porciones del fichero que caben en el espacio temporal disponible se leen en memoria principal, se ordenan utilizando un algoritmo de ordenacin interna y se vuelven a escribir en disco en forma de subficheros temporales ordenados (o porciones). El tamao de una porcin y el nmero inicial de porciones (nR) viene marcado por el nmero de bloques de fichero (b) y el espacio temporal disponible (nB). Por ejemplo, si nB = 5 bloques y el tamao del fichero es b = 1.024 bloques, entonces nR = [b/ nB] o 205 porciones iniciales, cada una de ellas con 5 bloques

(excepto la ltima que tendr 4 bloques). Por tanto, tras la fase de ordenacin se almacenarn 205 porciones ordenadas en disco como ficheros temporales. En la fase de mezclado, las porciones ordenadas se mezclan en una o ms pasadas. El grado de mezclado (dM) es el nmero de porciones que pueden ser mezcladas en cada pasada. Se necesita un bloque de espacio temporal en cada pasada para almacenar un bloque de cada una de las porciones que estn siendo mezcladas y se necesita otro bloque que contenga un bloque del resultado de la mezcla. Segn esto, dM es el valor ms pequeo entre (nB - 1) y nR y el nmero de pasadas es [(logdM(nR))]. En nuestro ejemplo, dM = 4 (mezcla en cuatro pasadas); por tanto, las 205 porciones ordenadas iniciales se mezclaran y se quedaran en 52 al final de la primera pasada. stas seran mezcladas nuevamente quedando 13, despus 4, y despus 1 porcin, lo que significa que se necesitan cuatro pasadas. El valor mnimo de 2 para dM corresponde al caso peor de la ejecucin del algoritmo, que es: (2 * b) + (2 * (b * (log2 b))). El primer trmino representa el nmero de accesos a bloques durante la fase de ordenacin, ya que a cada bloque del fichero se accede dos veces: una vez para ser ledo a memoria y otra vez para escribir nuevamente los registros en disco una vez ordenados. El segundo trmino representa el nmero de accesos a bloques durante la fase de mezclado, suponiendo el peor caso en el que dM vale 2. En general, el logaritmo se toma en base dM y la expresin que indica el nmero de bloques accedidos queda de este modo: (2 * b) + (2 * (b * (logdM nR))). Algoritmos para las operaciones SELECT y JOIN Implementacin de la operacin SELECT:

Mtodos de bsqueda en una seleccin simple . Es posible utilizar varios algoritmos de bsqueda para realizar la seleccin de registros en un fichero. Estos algoritmos se conocen, a veces, como exploraciones de fichero, ya que exploran los registros del fichero en el que se realiza la bsqueda y encuentran los registros que satisfacen una condicin de seleccin. Si el algoritmo de bsqueda implica la utilizacin de un ndice, esta bsqueda mediante un ndice se denomina exploracin indexada. Los siguientes mtodos de bsqueda (S 1 a S6) son ejemplos de algunos de los algoritmos de bsqueda que se pueden utilizar para implementar una operacin de seleccin. S1-Bsqueda lineal (fuerza bruta). Extraer todos los registros del fichero y comprobar si sus valores de atributos satisfacen la condicin de seleccin. S2-Bsqueda binaria. Si la condicin de seleccin implica una comparacin de igualdad sobre un atributo clave con el que est ordenado el fichero se puede utilizar la bsqueda binaria, que es ms eficaz que la bsqueda lineal. Un ejemplo es OP1 si Dni es el atributo de ordenacin para el fichero EMPLEADO. S3-Utilizacin de un ndice primario (o clave hash o clave de dispersin). Si la condicin de seleccin implica una comparacin de igualdad sobre un atributo clave con un ndice primario (o clave hash) (por ejemplo, Dni = '123456789' en OP1), se utilizar el ndice primario (o clave hash) para encontrar el registro. Observe que con esta condicin se extrae un nico registro (como mucho). S4-Utilizacin de un ndice primario para encontrar varios registros . Si la condicin de comparacin es >, >=, , >=,