Trabajando con Oracle Warehouse Builder - OWB Parte 3 - Un poco de Afinación en OWB
Estaba trabajando en un mapping que me estaba poniendo problema de
performance. Comencé a revisar el explain del query que genera OWB para el
mapping y vi que tenía con un costo de 57.634.199.428. Aunque en muchas
ocasiones la BD dice mentiras en este costo, decidí guiarme por este y comenzar
a trabajar en índices para poder bajar el costo y el resultado fue 14.899.776
(En una entrada posterior voy a hablar en temas de afinación en la BD Oracle).
Mejoro mucho, sin embargo puse a correr
durante seis horas el mapping y no fui capaz de lograr que terminara. Comencé a
analizar más y decidí sacar una parte del mapping y llevarlo a un mapping
aparte para poder realizar algunas operaciones en un paso antes del mapping y
lo lleve tal como lo tenía en el mapping, a continuación les muestro como
estaba el mapping.
Revise el query generado para este mapping
en el explain y el costo me dejo boquiabierto.
Increíble que el costo fuera de
14591695... Casi lo mismo que el anterior mapping en el que tenía una pequeña
telaraña (por lo grande del mapping) entonces me puse a analizar mi problema y
me di cuenta que el problema es:
El comportamiento de esto es lo más
pesado.
Lo que me tiene sorprendido es el
comportamiento con este elemento porque es realmente muy malo, por eso decidí
eliminar de manera inmediata el subquery filter y poner un join para mejorar el
rendimiento de mi mapping.
El query que genera este mapping me dio
como resultado este explain.
¿Puede mejorar más? Claro que si se puede
mejorar más porque todo es factible de mejorar en esta vida, sin embargo por
ahora vamos a quedar allí porque solo quiero resaltar el problema que resulta
de tener un subquery_filter y que es mil veces mejor tener un joiner, por favor
en sus desarrollos trate en la medida de lo posible hacer esto para que no
tenga problemas.
He leído con mucho interés tus publicaciones sobre OWB y me parecen muy buenas. hasta ahora has hablado por donde empezar: mapping, ERL, etc. Me gustaría sabr tus experiencias al final del camino, ¿como se explotan los datos por los usuarios? ¿que interfaz tienen? ¿vale la pena todo el esfuerzo con OWB cuando se puede hacer lo mismo programando PL/SQL como siempre? Te reitero mi agradecimiento por que compartas tus experiencias con todos.
ResponderEliminarHola Angel, muchas gracias por el aporte, voy a preparar algo con esto que me has dicho allí. De entrada te digo que en el tema de programando PL/SQL vs OWB, debes meter un elemento nuvo y es ODI porque a OWB le estamos comenzando a dar su carta de defunción debido a que Oracle decidio que en la BD 12 no va mas OWB así que solo lo tenemos disponible hasta la versión 11... Pero dejare varias experiencias para artículos que pondré muy rápido.
ResponderEliminarHola Angel, te dejo el link del primer escrito sobre experiencias, será la primera entrada pero no la última, espero escribirles las experiencias con la herramienta: http://intenego.blogspot.com/2014/03/algunas-experiencias-en-owb-parte-1.html
ResponderEliminar