Você está na página 1de 21

OPTIMIZACIN Y RENDIMIENTO

GRUPO No. 2

SUPERVISIN DEL RENDIMIENTO


DE UN DBMS
El objetivo de supervisar bases de datos es evaluar el
rendimiento de un servidor. Una supervisin eficaz implica
tomar instantneas peridicas del rendimiento actual para
aislar procesos que causan problemas y recopilar datos
de forma continua a lo largo del tiempo para realizar el
seguimiento de las tendencias de rendimiento.

CAUSAS DEL BAJO RENDIMIENTO EN LAS CONSULTAS.

Comunicaciones de red lentas.


Consultas que transfieren una gran
cantidad de datos entre cliente y el
servidor.
Memoria insuficiente.
Estadsticas obsoletas o ausencia de
ndices tiles.
Bloqueos de cierre o interbloqueos
causados por transacciones de larga
duracin.

DISEO PARA MEJORAR EL


RENDIMIENTO

Algunos elementos que afectan al rendimiento son difciles de


optimizar una vez que la base de datos est en
funcionamiento.

Disear una base de datos que utilice apropiadamente la


normalizacin y la desnormalizacin, y aplicar diseos de
esquema relacionales, en estrella y de copo de nieve, siempre
que sea necesario.

Desarrollar y probar procedimientos almacenados.

Programar
un
continuada.

mantenimiento

una

monitorizacin

PRUEBAS DE RENDIMIENTO
Pruebas de carga.

Esta
carga
puede
ser
el
nmero
esperado
de
usuariosconcurrentes utilizando la aplicacin y que realizan un
nmero especfico de transacciones durante el tiempo que dura la
carga. Esta prueba puede mostrar los tiempos de respuesta de
todas las transacciones importantes de la aplicacin.

Pruebas de estrs.

Se va doblando el nmero de usuarios que se agregan a la


aplicacin y se ejecuta una prueba de carga hasta que se rompe.

Pruebas de picos (spike testing).

trata de observar el comportamiento del sistema variando el


nmero de usuarios, tanto cuando bajan, como cuando tiene
cambios drsticos en su carga.

Pruebas de estabilidad (soak testing).

Esta prueba normalmente se hace para determinar si la


aplicacin puede aguantar una carga esperada continuada.

OPTIMIZACION DE CONSULTAS.

OPTIMIZACIN DE CONSULTAS

El proceso de optimizacin de consultas se puede realizar empleando


algebra relacional o analizando planes de ejecucin para determinar las
acciones a considerar para mejorar el rendimiento de las consultas.

Recomendaciones:
1. Si la consulta utiliza cursores, determine si se puede escribir la
consulta de cursor con un tipo de cursor ms eficaz (como un cursor de
slo avance rpido) o con una nica consulta. Las consultas nicas
normalmente mejoran las operaciones de cursor. Debido a que un
conjunto de instrucciones de cursor suele constituir una operacin de
bucle externo, en la que cada fila del bucle externo se procesa una vez
con una instruccin interna, considere la posibilidad de utilizar en su
lugar una instruccin GROUP BY, o una subconsulta.

OPTIMIZACIN DE CONSULTAS

2. Si una aplicacin ejecuta la consulta mediante un bucle, considere la posibilidad de


colocar el bucle en la consulta. A menudo, una aplicacin contendr un bucle que, a su
vez, contendr una consulta con parmetros que se ejecuta muchas veces y ser
necesario realizar un viaje de ida y vuelta en la red entre el equipo que ejecuta la
aplicacin y el DBMS. En su lugar, cree una sola consulta ms compleja con una tabla
temporal. Slo necesita un viaje de ida y vuelta en la red, y el optimizador de consultas
puede optimizar mejor la consulta nica.

3. No utilice varios alias para una sola tabla en la misma consulta para simular la
interseccin de ndices. Ya no es necesario debido a que muchos DBMS lo realizan
automticamente la interseccin de ndices y se puede utilizar varios ndices en la misma
tabla de la misma consulta.

4. Utilice consultas parametrizadas para permitir la reutilizacin de los planes de


ejecucin almacenados en la memoria cach. Si un conjunto de consultas tiene el mismo
hash de consulta y hash de plan de consulta, podra mejorar el rendimiento creando una
consulta parametrizada.

OPTIMIZACIN DE QUERYS

Respetar Llaves primarias e ndices para


construir los Where de las peticiones,
dejando de ultimo los atributos que no
pertenecen a ningn ndice.
Evitar el Uso de Cursores
Evitar usar los Not Exist
Evitar el uso de NOT IN
Evitar los operadores tales como IS
NULL, <>, !=, !>,!

OPTIMIZACIN DE QUERYS

7. Utilizar mas Joins que productos


cartesianos (dependiendo del dbms por
ejemplo Sybes en core bancarios no se
recomienda el uso de joins)
8. Evitar los Select * (asterisco) esto obliga
a que el dbms tenga que ir a buscar la
definicin de la tabla para extraer los
atributos que debe de mostrar lo que
agrega un paso antes de la interpretacin

OPTIMIZACIN DE QUERYS

Reducir el uso de Distinct ya que este


hace un doble esfuerzo porque primero
trae toda la data y como segundo paso
discrimina los repetidos
Utilizar el ORDER BY solo cuando sea
indispensable, es decir cuando la
consulta muestra datos finales de lo
contrario no se recomienda usarlo

OPTIMIZACIN DE QUERYS

Ejemplo:
Where i.Edad + 2 = @w_edad;
Incorrecto NONSARGABLE Where i.Edad
= @w_edad + 2; Correcto SARGABLE

CONSEJOS PARA OPTIMIZAR


CONSULTAS

Uso de ndices.
Nada de Select *
Encadena Select o usa JOIN pero no
ambas
Evitar Filtros de texto

PROCESO DE UNA CONSULTA

TCNICAS DE OPTIMIZACIN DE
CONSULTAS

Fsica o Estimacin de Coste.

Sintctica o reglas heursticas.

Elegir el plan de menor coste estimado.


Ordena las operaciones de la consulta para
incrementar la eficiencia de su ejecucin.
Utiliza un rbol o grafo de consultas.

Semntica.

Generalmente se combinan las dos primeras


tcnicas.

COSTE DE UNA CONSULTA

Tiempo de acceso al sistema de E/S

Volumen de datos.
Organizacin Fsica.
Bloques transferidos.
Ficheros intermedios.
Comunicacin.

Tiempo de procesamiento de CPU

Cmputos en memoria sobre ficheros

PLAN DE EJECUCION

SQL Server

ORACLE

Explain Plan

MySQL

Execution Plan

Explain

PostgreSQL

Explain [VERBOSE]

EJEMPLO EXPLAIN - ORACLE

EJEMPLO EXPLAIN - ORACLE

EJEMPLO EXPLAIN - ORACLE

Conclusin
Se ha realizado el plan de ejecucin a dos
consultas diferentes que nos retornan el mismo
resultado, una utilizando sub consultas y otra
utilizando INNER JOIN, sin embargo ambas nos
devuelven el mismo coste por lo que en este
caso especial no hay diferencia en el
rendimiento si se decide utilizar cualquiera de
las dos.

Você também pode gostar