SQL ORACLE Tuning
SQL ORACLE Tuning
SQL ORACLE Tuning
para Desarrolladores
SQL Tuning
Lo que Aprenderemos en este capítulo
2
Qué
es
SQL
Tuning?
• Proceso
de
construcción
de
sentencias
SQL
ópBmas
que
logren
resultados
de
la
manera
mas
efecBva
y
eficiente
posible.
• SQL
tuning
empieza
desde
el
diseño
de
las
cláusulas
de
la
sentencia.
– Principalmente
se
revisan
las
cláusulas
FROM
y
WHERE.
A
parBr
de
éstas
dos
el
opBmizador
toma
las
decisiones
sobre
el
plan
de
ejecución.
3
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
demás
procesos
que
componen
a
la
base
de
datos.
• El
proceso
de
afinamiento
de
la
base
de
datos
también
consiste
en
la
administración
y
manipulación
de
las
estructuras
de
la
base
de
datos
como
tablas
e
índices.
• Estas
y
otras
acBvidades
le
corresponden
al
DBA.
• El
objeBvo
del
afinamiento
de
base
de
datos
es
asegurar
que
la
base
de
datos
soporta
la
acBvidad
esperada
con
los
Bempos
de
respuesta
requeridos.
4
Database
vs.
SQL
Tuning
• SQL
tuning
es
el
proceso
de
afinar
las
sentencias
SQL
que
acceden
a
la
base
de
datos.
• Estas
sentencias
SQL
incluyen
queries
y
operaciones
transaccionales
como
inserts,
updates,
y
deletes
• El
objeBvo
del
afinamiento
SQL
es
escribir
sentencias
que
accedan
a
la
base
de
datos
de
la
manera
más
efecBva
aprovechando
los
recursos
de
la
base
de
datos
y
los
índices.
5
Database
vs.
SQL
Tuning
• Para
obtener
resultados
ópBmos,
se
requieren
los
dos
Bpos
de
Afinamiento.
• Una
base
de
datos
bien
afinada,
pero
con
queries
SQL
mal
diseñados
no
Bene
un
buen
desempeño.
(y
viceversa)
6
Sistema
complejo
• Al afinar la base de Aplicación
datos , debemos
recordar que forma Servidor
de
Aplicaciones
parte de un sistema
Sistema
Opera?vo
complejo con muchos
componentes Red
interrelacionados.
Base
de
Datos
Sistema Opera?vo
Storage
7
Problemas
más
comunes
• Mal
manejo
de
conexiones
desde
la
aplicación
hacia
la
base
de
datos.
• No
uBlizar
variables
bind.
• Falta
de
índices
–
full
table
scan
innecesarios
• Degradación
de
los
planes
de
ejecución
8
Manejo
de
conexiones
• El
proceso
de
establecer
una
conexión
a
la
base
de
datos
es
costoso
y
no
escalable.
• El
número
de
conexiones
concurrentes
a
la
base
de
datos
debe
minimizarse.
• Para
una
aplicación,
esto
requiere
manejo
de
un
pool
de
conexiones.
• Evitar
conexiones
y
desconexiones
para
cada
requerimiento
del
usuario.
9
Manejo
de
conexiones
10
SQL
Tuning:
Variables
Bind
11
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.
• Esto
quiere
decir
que
el
query
deberá
pasar
por
todas
las
fases
de
parsing,
opBmización
y
demás
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
reuBlizar
el
plan
de
ejecución
que
queda
en
el
Library
cache.
12
Variables
Bind:
Ejemplo
1
13
Variables
Bind:
Ejemplo
14
Qué
es
un
Latch
?
15
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.
• Se
debe
analizar
si
esto
consBtuye
un
problema
de
performance,
ya
que
dependiendo
del
tamaño
de
la
tabla
esta
opción
puede
ser
válida.
• En
el
proceso
de
afinamiento
de
queries,
es
importante
idenBficar
para
consultas
problemáBcas
si
se
están
realizando
FTS
innecesarios.
16
Lo que vimos en este capítulo
17