Introduccin a la Optimizacin de Consultas.
Ctedra del 07-09-2013
Introduccin al afinamiento (tuning) de SQL
Mejorar el desempeo de SQL es generalmente la forma ms
efectiva de mejorar el desempeo de las aplicaciones Afinar SQL no es sencillo Beneficios al realizar tuning: Mejorar el tiempo de respuesta de las aplicaciones online Mejorar el tiempo de las aplicaciones batch (puede llegar el momento
en que traspasen los lmites permisibles + 12 horas?) Garantizar la escalabilidad de la aplicacin Reducir la carga del sistema liberar recursos para otros propsitos Evitar actualizaciones innecesarias (e intiles muchas veces) de hardware
Tipo de Degradacin de Rendimiento
http://www.alegsa.com.ar/Dic/bottleneck.php
Bottleneck Exponencial
Tpo. de Rta.
Lineal Afinado
Volumen de Datos
Objeciones comunes para realizar tuning:
El optimizador automticamente afina las sentencias SQL Afinar SQL no est dentro de mi rea de especialidad Yo escribo SQL, otra persona lo debe afinar Afinar el SQL ms tarde No podemos darnos el lujo de dedicar tiempo a afinar el SQL
Cundo se debe afinar? Idealmente SQL debera ser afinado en el momento en que se escribe. Mientras ms avanzado est el proyecto ms difcil ser realizar el tuning:
Cambiar algunos aspectos implican cambiar muchas otras cosas Una vez que SQL entra en produccin, la simple adicin de un ndice sobre una tabla grande puede ser complejo (tiempo, restricciones corporativas etc.)
Costo-Beneficio del tuning durante el ciclo de vida de un sistema
Costo de Realizar Tuning
Mejora del Desempeo Diseo Desarrollo Pruebas Produccin
Impacto del Tuning
Diseo de la BD
Tuning SQL
Compra de nuevo hardware Tuning del Servidor de BD Tuning del Sistema Operativo Tuning de la Aplicacin (sin incluir SQL)
Posible Mejora
El proceso de afinamiento de SQL:
Sentencia SQL inicial Generar plan de Ejecucin
Si
Se ha logrado la optimizacin deseada?
Terminar
El tuning Es un proceso iterativo
Afinar SQL
No
Formular un nuevo plan de Ejecucin
http://ora.u440.com/dba/hints.html
Reescribir la Sentencia SQL
Usar Hints
Adicionar o Quitar ndices
Rediseo de tablas
Condiciones para realizar tuning:
Volmenes de datos reales: Realizar tuning contra tablas vacas o con pocos registros es prcticamente intil. Alternativas:
Probar en el ambiente real antes de entrar en produccin Trabajar en un ambiente con tablas a escala de las reales, por ejemplo un 25% del tamao de las tablas grandes y un 100% de las tablas pequeas (tablas de referencias)
Condiciones para realizar tuning:
Documentacin de los modelos disponibles Los requerimientos del sistema han sido expuestos Si el diseo est mal, el tuning puede ser intil! Aunque el SQL est afinado, si el servidor no lo est, esto podra impedir el logro de las expectativas Afinar el servidor de la BD
Herramientas de Oracle para realizar Tuning de Sentencias SQL
EXPLAIN PLAN
El plan de ejecucin de una sentencia SQL es la secuencia de operaciones que el motor de Oracle realiza para ejecutar una sentencia El EXPLAIN PLAN es una herramienta proporcionada por Oracle que permite observar el plan de ejecucin (y otros datos valiosos) de una sentencia especfica El EXPLAIN PLAN muestra los planes de ejecucin escogidos por el optimizador de Oracle para las sentencias SELECT, UPDATE, INSERT y DELETE
EXPLAIN PLAN
Los componentes del plan de ejecucin de una sentencia incluyen:
El orden de acceso a las tablas utilizadas en la sentencia
Un mtodo de acceso para cada tabla utilizada en la sentencia
Un mtodo de acceso a las tablas para operaciones binarias:
- Reunin (join) - Unin - Interseccin etc.
EXPLAIN PLAN
Aunque la salida del EXPLAIN PLAN muestra cmo ejecuta Oracle una sentencia SQL, estos resultados por si solos no son suficientes para diferenciar entre sentencias bien optimizadas y las que no lo estn Por ejemplo, si la salida muestra que una sentencia usa un ndice, esto no significa que la sentencia ejecuta eficientemente. En algunas ocasiones los ndices pueden ser extremadamente ineficientes(ver luego ndices)
EXPLAIN PLAN
Entonces por qu se debe utilizar el EXPLAIN PLAN?
El EXPLAIN PLAN permite determinar por ejemplo si un ndice est siendo usado, el mtodo de join que est siendo utilizado etc. Es posible instruir a Oracle para que modifique el plan (ver Hints) y luego a travs de pruebas (tipo TKPROF*), determinar cul es ms eficiente Al poder visualizar el plan de ejecucin de una consulta se puede determinar dnde puede haber problemas potenciales de rendimiento *Ver ms adelante
EXPLAIN PLAN
Cuando se evala un plan se debe examinar adicionalmente el consumo actual de recursos de la sentencia Lo anterior se logra mediante el uso de las herramientas TRACE y TKPROF para examinar el rendimiento de las sentencias SQL
EXPLAIN PLAN
Los resultados del EXPLAIN PLAN quedan guardados en una tabla la cual puede ser creada utilizando un script proporcionado por Oracle (UTLXPLAN.SQL). Dicha tabla posee las siguientes columnas:
Es el identificador de la sentencia.
EXPLAIN PLAN
Especifica variantes para la operacin ejecutada. Ms adelante se observarn sus posibles valores.
EXPLAIN PLAN
Utilizado para consultas distribuidas. OTHER contiene el texto SQL que es ejecutado en un nodo remoto.
Informacin adicional para consultas distribuidas y paralelas.
est a tablas.
Nmero estimado de filas accesadas por la operacin Nmero estimado de bytes retornados por la operacin