Вы находитесь на странице: 1из 17

Afinamiento SQL y PL/SQL

redPartner
para Desarrolladores

SQL Tuning

1
Agenda
Qu es SQL Tuning?
DB Tuning vs SQL Tuning
Problemas ms comunes

redPartner
Uso de variables Bind
Qu es SQL Tuning?
Proceso de construccin de sentencias SQL ptimas que logren
resultados de la manera mas efectiva y eficiente posible.
SQL tuning empieza desde el diseo de las clusulas de la
sentencia.

redPartner
Principalmente se revisa las clusulas FROM y WHERE. A
partir de stas dos el optimizador toma las decisiones sobre el
plan de ejecucin.
Database vs. SQL Tuning
Database tuning es el proceso de afinamiento de la
base de datos, lo que incluye la memoria asignada, el
uso de disco, CPU, I/O, y dems procesos que
componen a la base de datos.

redPartner
El proceso de afinamiento de la base de datos
tambin consiste en la administracin y manipulacin
de las estructuras de la base de datos como tablas e
ndices.
Estas y otras actividades le corresponden al DBA.
El objetivo del afinamiento de base de datos es
asegurar que la base de datos soporta la actividad
esperada con los tiempos de respuesta requeridos.
Database vs. SQL Tuning
SQL tuning es el proceso de afinar las
sentencias SQL que acceden a la base de
datos.

redPartner
Estas sentencias SQL incluyen queries y
operaciones transaccionales como inserts,
updates, y deletes
El objetivo del afinamiento SQL es escribir
sentencias que accedan a la base de datos de
la manera ms efectiva aprovechando los
recursos de la base de datos y los ndices.
Database vs. SQL Tuning
Para obtener resultados ptimos, se requieren los dos tipos de
Afinamiento.
Una base de datos bien afinada, pero con queries SQL mal

redPartner
diseados no tiene un buen desempeo. (y viceversa)
Sistema complejo
Al afinar la base de datos ,
debemos recordar que forma
parte de un sistema complejo
con muchos componentes
interrelacionados.

redPartner
Problemas ms comunes
Mal manejo de conexiones desde la aplicacin hacia la base de
datos.
No utilizar variables bind.

redPartner
Falta de ndices full table scan innecesarios
Degradacin de los planes de ejecucin
Manejo de conexiones
El proceso de establecer una conexin a la base de datos es
costoso y no escalable.
El nmero de conexiones concurrentes a la base de datos debe

redPartner
minimizarse.
Para una aplicacin, esto requiere manejo de un pool de
conexiones.
Evitar conexiones y desconexiones para cada requerimiento del
usuario.
Manejo de conexiones

redPartner
SQL Tuning: Variables Bind

Una de las mayores causas de problemas de


desempeo en sentencias SQL es no usar
variables Bind.

redPartner
select * from emp where empno=123;
select * from emp where empno=:empno
:empno es una variable que se reemplaza en
tiempo de ejecucin con el valor que se
requiera para ejecutar la consulta.
SQL Tuning: Variables Bind

Si no se usan variables bind, cada vez que se ejecuta


un query que usa constantes , la base de datos los
considera como nunca antes vistos.

redPartner
Esto quiere decir que el query deber pasar por todas
las fases de parsing, optimizacin y dems pre-
procesos.
Esto se conoce como hard parsing.
En contraste, el query que usa variables bind, pasa
por la etapa de parse la primera vez, y las ejecuciones
siguientes pueden reutilizar el plan de ejecucin que
queda en el Library cache.
Variables Bind: Ejemplo
1

redPartner 3

2
Variables Bind: Ejemplo

redPartner
Qu es un Latch ?

Tipo de candado o lock que se usa


para controlar el acceso a las
estructuras compartidas utilizadas por
la base de datos.

redPartner
Una de stas estructuras es el Shared
Pool, que forma parte de la SGA.
En el Shared Pool se almacena todo
el SQL que ha pasado por la fase de
parse y est compilado.
Esta estructura compartida requiere
control para que solo un proceso
tenga acceso a la vez, usando
latches.
Full Table Scans

Cuando no existen los ndices correctos, es posible


que un query o sentencia DML realice un FTS , lo que
quiere decir un barrido de todas las filas de la tabla.

redPartner
Se debe analizar si esto constituye un problema de
performance, ya que dependiendo del tamao de la
tabla esta opcin puede ser vlida.
En el proceso de afinamiento de queries, es
importante identificar para consultas problemticas si
se estn realizando FTS innecesarios.
Preguntas

redPartner
17
17

Вам также может понравиться