Hola uhilari. Te cuento mi experiencia, como vos yo también estoy hace poco en este maravilloso de los orm. Tenia que hacer un proceso batch que leia un excel y cargaba 1500 registros por ahi. El problema es que los registros podian existir y en algunas ocasiones habia que actualizar y en otras insertar. primero use SaveOrUpdate, no me andubo bien. Entonces decidi preguntar si existia, para actualizar o insertar). Despues me di cuenta que tenia muchos select's al pedo. Asi que antes del bucle realizo un getall() en una lista y luego consulto la lista por medio de delegados y métodos anónimos ( si tenes Linq muchio mejor). Otro parámetro que afecta bastante es el *adonet.batch_size aqui hablan de eso http://nhforge.org/wikis/reference2-0en/nhibernate-provided-ado-net-connection.aspx Yo lo puse a mil. Bueno tal vez es una burrada o tal vez no. *2009/1/25 uhilari <[email protected]>
> > Hola a todos Foreros. > > Tengo este problema, lo que pasa es que en el Sistema que estamos > desarrollando, bueno, mas que un desarrollo es una actualizacion, lo > que hacemos es tomar un sistema que existe hech en VB6, que usa SQL > nativo y ahora lo estamos pasando a C# .Net para la persistencia > estamos usando NHibernate. La programacion de los procesos son mas > logicos y mas intuitivos para cualquier persona que no haya > participado en el desarrollo. Esta es una gran ventaja. > > Pero ahora viene el problema, veran en el sistema (tanto anterior como > actual) tenemos 3 procesos criticos que son procesos en lotes del tipo > Background, en el primer Sistema lo mas que demoraba cualquiera de > estos procesos era de 2 minutos, el tiempo promedio era de 20 > segundos, pero ahora haciendolo con NHibernate el mejor tiempo que > conseguimos fue de 10 minutos, esto es inaceptable por parte del > proyecto. > > Tengo una teoria de por que demora tanto, que cuando realizo el > proceso veo que dispara muchos Insert - Updates y Select (sobre todo > los select), asi que lo que hicimos para mejorar esto es poner los > datos necesarios en una cache en la memoria de la PC, esto hizo que el > tiempo bajara a 4:40 pero aun asi es inaceptable. > > El primer proceso que hicimos teniamos el Session.Save y el > Session.Flush, dentro del bucle, uno despues del otro, y el tiempo era > de 4:40. Luego lo que usamos fue: en el bucle del proceso solo poner > los Session.Save y dejar el Session Flush, para salir del bucle, pero > esto no mejoro el tiempo del proceso, sino que nos creo un tiempo > muerto en la Interfaz. > > Lo que pido a Uds. expertos en NHibernate es que nos ayuden con ideas > de como poder accelerar este proceso. > Ya que si el tiempo sigue igual, no justifica el hecho e hacer un > nuevo sistema. > > Gracias > > > -- Ramirez, Diego Alcides Ingeniero en Sistemas de Información Tel:(+543731)-15405075 Blog: www.thedarsideofit.com.ar Equipo de Desarrollo - VGM Sistemas www.vgmsistemas.com.ar --~--~---------~--~----~------------~-------~--~----~ Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano -~----------~----~----~----~------~----~------~--~---
