FAQ - Preguntas frecuentes sobre Oracle - ¿Como puedo usar el optimizador basado en costes para optimizar?

1 - ¿Como puedo usar el optimizador basado en costes para optimizar?

[editar]
Monografía creado por José Manuel. Extraido de: http://www.lawebdejm.com
30 de Noviembre de 1999
El optimizador basado en costes (Cost Based Optimizer, CBO) se introdujo en Oracle 7 y se basa en calcular el coste de distintos planes de ejecución y eligir para la ejecución el plan de ejecución con menor coste. En su contra, está el optimizador basado en reglas (Rules Based Optimizer, RBO), que se basa en una reglas prefijadas para decidir el plan de ejecución de una consulta.


Para calcular el coste de una consulta, el optimizador se basa en las estadísticas almacenadas en el catálogo de Oracle, a través de la instrucción:


ANALYZE [TABLE,INDEX] <object_name> [COMPUTE, ESTIMATE] STATISTICS;


Si no existen datos estadísticos para un objeto (por ejemplo, porque se acaba de crear), se utilizarán valores por defecto. Además, si los datos estadísticos está anticuados, se corre el riesgo de calcular costes basados en estadísticas incorrectas, pudiendo ejecutarse planes de ejecución que a priori pueden parecer mejores.
Por esto, si se utiliza el optimizador basado en costes, es muy importante analizar los objetos periodicamente (como parte del mantenimiento de la base de datos). Como las estadísticas van evolucionando en el tiempo (ya que los objetos crecen o decrecen), el plan de ejecución se va modificando para optimizarlo mejor a la situación actual de la base de datos. El optimizador basado en reglas hacía lo contrario: ejecutar siempre el mismo plan, independientemente del tamaño de los objetos involucrados en la consulta.


Dentro de la optimización por costes, existen dos modos de optimización, configurables desde el parámetro OPTIMIZER_MODE:


- FIRST_ROWS: utiliza sólo un número determinado de filas para calcular los planes de ejecución. Este método es más rápido pero puede dar resultados imprecisos.


- ALL_ROWS: utiliza todas las filas de la tabla a la hora de calcular los posibles planes de ejecución. Este método es más lento, pero asegura un plan de ejecución muy preciso. Si no se indica lo contrario, este es el método por defecto.


El optimizador basado en costes se utilizará en alguna de las siguientes situaciones:


1.- Si el parámetro OPTIMIZER_MODE del archivo INIT.ORA está definido como ALL_ROWS o FIRST_ROWS.
2.- Si existen estadísticas para alguna de las tablas involucradas en la consulta y el parámetro OPTIMIZER_MODE es distinto a RULE.
3.- Si se incluye un "hint" distinto a +RULE.
4.- Si se ha establecido la variable OPTIMIZER_GOAL a ALL_ROWS o FIRST_ROWS a nivel de sesión.
5.- En Oracle 7.3, si alguna tabla tiene un grado de paralelismo distinto de 0.
[editar]

Sé el primero en opinar


Monografías relacionados con 'FAQ - Preguntas frecuentes sobre Oracle'

Lista de FAQs que he ido recopilando durante los tres años que trabajé con Oracle,... Más »
Las Pequeñas y Medianas empresas (PYME’s) necesitan incorporar tecnología a sus estrategias de negocio para... Más »

Autor y licencia de 'FAQ - Preguntas frecuentes sobre Oracle'


Monografía de José Manuel. Extraido de: http://www.lawebdejm.com CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.