DESEMPEÑO DE CONSULTAS SQL words: relational and object-relational databases, tuning, SQL,...

Click here to load reader

  • date post

    15-Jul-2018
  • Category

    Documents

  • view

    227
  • download

    0

Embed Size (px)

Transcript of DESEMPEÑO DE CONSULTAS SQL words: relational and object-relational databases, tuning, SQL,...

  • DESEMPEO DE CONSULTAS SQL RELACIONALES Y OBJETO-RELACIONALES EN ORACLE

    REVISTA INGENIERIA E INVESTIGACION No (59). VOL: 25 No.3 DICIEMBRE DE 20054

    Desempeo de consultas SQL relacionales yDesempeo de consultas SQL relacionales yDesempeo de consultas SQL relacionales yDesempeo de consultas SQL relacionales yDesempeo de consultas SQL relacionales yobjeto-relacionales en Oracleobjeto-relacionales en Oracleobjeto-relacionales en Oracleobjeto-relacionales en Oracleobjeto-relacionales en Oracle

    The performance of relational and object-relational SQL queries whenusing Oracle

    Francisco Javier Moreno,1 Guillermo Ospina Romero,2 Rafael Larios Restrepo3

    RESUMEN

    En este artculo se muestra por medio de consultas especficas el comportamiento del modelo relacional y objeto-relacional, y se presenta as un estudio en el que se mide y a la vez se compara la eficiencia (tiempo, uso derecursos del sistema) de operaciones que involucran clusulas GROUP BY, subconsultas (con las clusulas IN yEXISTS), y reuniones (joins).

    PPPPPalabras clave:alabras clave:alabras clave:alabras clave:alabras clave: bases de datos relacionales y objeto-relacionales, optimizacin, SQL, Oracle.

    ABSTRACT

    This article presents a study in which the performance of several queries involving GROUP BY clause, sub-queries(using IN and EXISTS clauses) and joins are measured and compared by means of specific queries. The behaviourof relational and object-relational models is also shown.

    Key words: Key words: Key words: Key words: Key words: relational and object-relational databases, tuning, SQL, Oracle.

    Recibido: mayo 5 de 2005Aceptado: septiembre 23 de 2005

    1 M.Sc. Universidad Nacional de Colombia Sede Medelln, profesor asociado a la Universidad Nacional Sede Medelln, e-mail: [email protected] Aspirante a ttulo de Ingeniera en Sistemas en la Universidad Nacional Sede Medelln, e-mail: [email protected] Aspirante a ttulo de Ingeniera en Sistemas en la Universidad Nacional Sede Medelln, [email protected]

    Introduccin

    Buscar la optimizacin de las consultas para reducir tiem-pos de respuesta o evitar el uso exagerado de recursosdel sistema, se ha constituido en un objetivo durante losltimos aos. En muchas consultas, la realizacin de re-uniones (joins), agrupamientos y subconsultas entre ta-blas, es indispensable para obtener la informacinsolicitada.

    El SGDB Oracle soporta el modelo relacional y el objeto-relacional a partir de la versin 8i (Oracle Corporation,2003), sin embargo poco se sabe cundo es mejor utilizarcada uno de ellos (Bodnar, 2000; Raghavan, 1999), espor esto que se proceder a analizar casos que proporcio-narn una base para entender y aplicar de una mejormanera, las consultas que se construyan en uno u otro

    modelo (tablas relacionales, frente a tablas basadas entipos y tablas anidadas del modelo objeto-relacional).

    Para lograr tal anlisis, Oracle provee varias herramientasque permiten observar cmo se comporta la ejecucinde una determinada consulta. Estas herramientas son elEXPLAIN PLAN, SQL TRACE y el Tkprof. Estas herramien-tas entregan informacin detallada acerca de la ejecucinde una consulta (tales como bloques ledos durante laejecucin de la consulta, filas procesadas, uso de la cpu,entre otros), la cual ayuda en gran manera a evaluar sudesempeo. Sin utilizar estas herramientas no sera posi-ble analizar cmo se comporta internamente la consulta,es decir, no se dispondra de informacin suficiente paraconocer en qu forma se debe modificar una consultapara hacerla ms eficiente.

    REVISTA INGENIERA E INVESTIGACIN. VOL. 25 No. 3, DICIEMBRE DE 2005. 4 - 12

  • MORENO, OSPINA Y LARIOS

    5REVISTA INGENIERIA E INVESTIGACION No (59). VOL: 25 No.3 DICIEMBRE DE 2005

    El SGBD Oracle tambin ofrece la oportunidad de modificarla forma en que se ejecutan internamente las consultas,esto se logra mediante la utilizacin de palabras clave den-tro de la sentencia a ejecutar. Estas palabras clave son lla-madas hints. A travs de su utilizacin se puede influir en laejecucin parcial o total de la consulta con el objetivo demejorar posiblemente el rendimiento de la misma.

    El SGBD Oracle posee un optimizador interno que le permitedefinir un plan de ejecucin para una consulta. Esteoptimizador, sin embargo, no siempre define el plan msptimo. Es en estos casos en donde la utilizacin de los hintsse hace necesaria para la bsqueda de consultas optimizadas.

    El SGBD soporta una gran cantidad de hints para forzar aloptimizador a realizar diferentes acciones especficas queayudan al proceso de optimizacin (entre ellas se encuen-tran el forzar o no la utilizacin de ndices, seleccin delmtodo para realizar una reunin, entre otros); sin embar-go, no es el objetivo de este artculo mostrar la variedadde hints que soporta el SGBD Oracle, sino mostrar y utili-zar aquellos que apoyan el enfoque del artculo. Un anli-sis detallado puede verse en (Nyffenegger, 2001)

    El artculo se concentra en el comportamiento del SGBDOracle en algunas consultas especficas aplicadas en unmodelo relacional y objeto-relacional. El cuerpo del artcu-lo es el siguiente: en la seccin 2 se presentan las tasas derendimientos a analizar en el desempeo de una consulta,en la seccin 3 los mtodos de reunin disponibles enOracle, en la seccin 4 los modelos a utilizar, en la seccin5 los resultados, y finalmente, en la seccin 6, las conclu-siones y trabajos futuros. Todos los ejemplos y ejerciciosse desarrollaron mediante la utilizacin de la herramientaJDeveloper de Oracle y la herramienta SQL*Plus, la interfazde lnea de comandos por defecto de Oracle.

    Tasas utilizadas para medir el desempeode una consulta

    Mediante la herramienta Tkprof se puede obtener un ar-chivo de salida como el mostrado en la Figura 1. A partirde l se analizan las siguientes tasas (Harrison, 2000):

    1. Bloques ledos (f+g) sobre filas procesadas (h). Esta tasaindica de una manera general el costo relativo de la con-sulta. Mientras ms bloques tienen que ser accedidos enrelacin en las filas retornadas, la fila trada ser muchoms costosa. Una relacin similar se puede deducir sobrela tasa de bloques ledos sobre ejecuciones (f+g)/e. El va-lor que se debe procurar para esta tasa debe ser menor a10, sin embargo tasas con valores de 10 a 20 son acepta-bles. Tasas por encima de 20 pueden indicar alguna posibi-lidad de optimizacin en este campo.

    2. Parsing (d), sobre ejecucin (e). Idealmente, el conteode parsing (anlisis sintctico) debe ser cercano a uno. Sieste valor es alto en relacin al conteo de ejecuciones, lasentencia entonces ha sido "parseada" varias veces sin ne-

    cesidad, lo cual indica que puede haber problemas en eltamao del shared pool4 (muy pequeo). Otra razn paraque esto ocurra es que es posible que no se utilicenvariables tipo bind5 en la sentencia (Niemiec, 2005).

    3. Filas tradas (i) sobre tradas (j) (Rows Fetched overfetches). Esta tasa indica el nivel en el cual la capacidad delarray fetch6 ha sido utilizada. Una tasa cercana a uno, indicaque hubo poco procesamiento a travs de arrays, lo quesignifica que existe una buena oportunidad para optimizar.

    4. Lecturas de Disco (k) sobre lecturas lgicas (f+g). Estaes una tasa de error (miss rate) dentro del buffer de datosen la zona de cach, es decir, es una tasa que muestra elporcentaje de ocasiones en el que SGBD no ha encon-trado las filas solicitadas en el buffer de la zona de cachy por lo tanto ha tenido que recurrir a traer los bloquesdesde disco. Generalmente se busca que esta tasa norepresente ms de un 10%.

    call count cpu elapsed disk query current rows

    Parse(a) (d)

    Execute(b) (e)

    Fetch(c) (j) (i)

    Total (k) (f) (g) (h)

    Figura 1. Estructura de la salida del TKPROF

    Mtodos de reunin (join) y Hints

    Se realizar una comparacin de los diferentes mtodosde reunin que se encuentran disponibles en Oracle.Los mtodos a evaluar son: Hash, Nested Loops y SortMerge (Date, 2001).

    Hash: Este mtodo utiliza una tabla de HASH basada enlas tablas implicadas en la reunin.

    Nested Loops: En este mtodo se utilizan ciclos anidadospara la lectura de las tablas. Por cada elemento (tupla obloque) de la tabla externa se leen todos los elementos(tuplas o bloques) de la tabla interna.

    Sort Merge: En este mtodo, las tablas, a las cuales se lesefectuar la reunin, pasan por un proceso de ordena-miento previo a la reunin.

    4 El shared pool (Nyffenegger, 2000) es una zona del SGBD Oracledonde se encuentran almacenados: planes de consultas optimizados,sentencias SQL parseadas e informacin de objetos, entre otros. 5 Debido a que las sentencias SQL se guardan en memoria, cuando seutilizan variables tipo bind en una consulta, estas permiten que a lamisma no se le haga parsing cada vez que se ejecute ("la sentencia nocambia"), de manera que as libera recursos tiles (Kyte, 2000).6 Array Fetch es la caracterstica que posee el SGBD Oracle, que lepermite traer ms de una fila de la consulta por cada fetch realizado(Harrison, 2000).

  • DESEMPEO DE CONSULTAS SQL RELACIONALES Y OBJETO-RELACIONALES EN ORACLE

    REVISTA INGENIERIA E INVESTIGACION No (59). VOL: 25 No.3 DICIEMBRE DE 20056

    Por defecto, el SGBD tomar en cuenta el camino deejecucin (Execution Path) determinado por el optimizadorinterno, y de acuerdo con este, seleccionar uno de losmtodos de join para ejecutarlo. Por medio de la utiliza-cin de Hints, se puede forzar a que el SGBD ejecuteuna sentencia especfica con un mtodo deseado y por lotanto, sea posible comparar las tasas de rendimiento an-tes mencionadas. Para utilizar los Hints, es necesario in-troducirlos dentro de la sentencia a ejecutar