Академический Документы
Профессиональный Документы
Культура Документы
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
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
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 ?
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
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