Vous êtes sur la page 1sur 28

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