entiendo esos factores pero aparte de lo que tenga, la prueba la he hecho bajo los mismos factores solo modificando el mappin y lanzando un Escrituras.GetId y midiendo el tiempo que demora en ejecutarse. Entonces obtengo que haciendo lo mismo sin lazy tarda 423 milisegundos y con lazy 2336, he hecho varias pruebas y los tiempos son estables.
Tengo una bd de access (lo se, lo se) aunque voy a probar ahora con sql server a ver q tal... muy agradecido por sus comentarios. El 26 de mayo de 2010 14:41, Nelo Pauselli <[email protected]>escribió: > Rafael, fijate que la primer consulta del no-lazy es igual a la única > del lazy, por lo que la diferencia de tiempos no está en la estructura > del select... (si fuesen diferentes habría que mirar los planes de > ejecución) > > Hay muchos factores que influyen en esto. ¿lo estás probando en un > servidor o en una pc de desarrollo? ¿que carga tenía, durante cada > prueba, la pc que tenía la base de datos?... hay muuucho al respecto > de tuning de bases de datos, y por suerte mucho escrito. > > Nelo. > > 2010/5/26 Rafael Ruiz Menduiña <[email protected]>: > > vale, deacuerdo. es una prueba que he echo yo modificando la tabla para > ver > > que pasaria. > > > > * Pero ahora estoy viendo los tiempos de carga y me ha sorprendido ver > que > > sin usar lazy obtengo > > > > [13:50:16:796][SELECT][SELECT [Numero], Concepto, Fecha, Prevista, Lugar, > > Folios, Documento, Notario, Dni, [Copias Autorizadas Realizadas], [Copias > > Simples Realizadas], [Folios Simples Reales], [Folios Autorizadas > Reales], > > Retirada, RutaNota, Sustituto from [Escrituras] WHERE [Numero]=11000012] > > [13:50:16:843][SELECT][SELECT Notario, [Nombre Notario], [Apellidos > > Notario], [Numero De Notario], [Dni Notario], Baja, DireccionAgenda from > > [Datos Generales] WHERE Notario=51] > > [13:50:16:890][SELECT][SELECT Dni, Telefono, Email, [Enviar EMail], > > FelicitaNavidad, [Descuento Corretajes], [Descuento Escrituras], > > Controlador, Nacionalidad, [Apartado Correos], Bloque, Escalera, Planta, > > Puerta, [Numero Calle], [Nombre Via], [Numero Via], [Direccion no > > normalizada], Duplicado1, Duplicado2, [Numero Via2], [Pais Extranjero], > > [Numero Via Extranjero], [Poblacion Extranjero], [EstadoProvincia > > Extranjero], [Distrito Extranjero], [Via Extranjero], Via, Municipio, > Sexo, > > [Codigo Entidad], [Fecha De Nacimiento], [Fecha Defuncion], Nombre, > [Lugar > > De Nacimiento], [Vigente Desde], [Vigente Hasta], Movil, [numero de > > capitulacion], [ComunidadBienes], Retener, [Cliente Fijo], Mayor, Nif, > > Conyuge, Pais, ApellidoSoltera, [Cod Regimen Matrimonial], [Cod Estado > > Civil], profesion, NIE, Incapacidad, [No Residente], Profesional, [Notas > > Cliente] from Clientes WHERE Dni='X8888'] > > [13:50:16:937][SELECT][SELECT [Via abreviada], Via from Vias WHERE [Via > > abreviada]='CL'] > > [13:50:16:984][SELECT][SELECT Municipio, Ciudad, Provincia, [Codigo > Postal], > > [Codigo Provincia], [Codigo Municipio], Delegacion from [Codigos > Postales] > > WHERE Municipio='LORCA'] > > > > Tiempo: 423 ms (vemos como no usa lazy y hace varias selects por cada > > relacion) > > > > * Pero si uso Lazy (elimino not-found=ignore) > > > > [13:54:28:953][SELECT][SELECT [Numero], Concepto, Fecha, Prevista, Lugar, > > Folios, Documento, Notario, Dni, [Copias Autorizadas Realizadas], [Copias > > Simples Realizadas], [Folios Simples Reales], [Folios Autorizadas > Reales], > > Retirada, RutaNota, Sustituto from [Escrituras] WHERE [Numero]=11000012] > > > > Tiempo: 2336 ms. Vemos como se simplifica la select, cargando nada mas > que > > escritura y sin embargo el tiempo es mucho mayor. > > > > Alguna explicacion?, yo estaba buscando que funcionara el Lazy > precisamente > > para ir mas rapido, no entiendo el por que de este resultado > > > > Muchas gracias > > > > > > > > > > > > > > > > El 26 de mayo de 2010 14:09, José F. Romaniello <[email protected]> > > escribió: > >> > >> Pero eso significa que tu base de datos esta mal y deberías arreglarla. > >> No es "si tiene o no tiene", es si esta relacionada a una que no existe, > >> en tu caso no existe el NotarioNotariaImp con clave 51. > >> El 26 de mayo de 2010 08:34, Rafael Ruiz Menduiña <[email protected]> > >> escribió: > >>> > >>> Ok lo he probado y FUNCIONA, > >>> > >>> pero de no usar el not-found en caso de que no tener una entidad > >>> relacionada, en lugar de devolverme nothing me devuelve un proxy.....un > >>> error y al consultar alguna propiedad obtengo "No row with the given > >>> identifier exists[empresaDatos.NotarioNotariaImp#51]" > >>> > >>> Como controlo ahora para saber si tiene o no una entidad relacionada, > >>> hasta ahora tenia que comprobar If entidad.mientidadrelacionada is not > >>> nothing...... > >>> > >>> muchas gracias. > >>> > >>> > >>> > >>> > >>> El 26 de mayo de 2010 13:10, Fabio Maulo <[email protected]> > escribió: > >>>> > >>>> not-found ="ignore" <== causa > >>>> > >>>> 2010/5/26 Rafael Ruiz Menduiña <[email protected]> > >>>>> > >>>>> - Mi entidad Cliente > >>>>> > >>>>> <?xml version="1.0" encoding="utf-8"?> > >>>>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" > >>>>> assembly="empresaDatos" namespace="NCliente"> > >>>>> <class name="empresaDatos.ClienteImp, NotinDatos, Version=1.0.0.0, > >>>>> Culture=Neutral, PublicKeyToken=354554543179e" table="Clientes" > >>>>> dynamic-insert="true" dynamic-update="true" mutable ="true"> > >>>>> > >>>>> <id name="Codigo" column="Dni" type="String" > unsaved-value="-100"> > >>>>> <generator class="native" /> > >>>>> </id> > >>>>> <property name="Telefono" column ="Telefono" type ="String"/> > >>>>> <property name="Email" column="Email" type="String"/> > >>>>> <property name="EnviarEmail" column="[Enviar EMail]" > >>>>> type="Boolean"/> > >>>>> > >>>>> <many-to-one name="TipoVia" column="Via" not-found ="ignore" class=" > >>>>> empresaDatos.TiposViaImp, empresaDatos, Version=1.0.0.0, > Culture=Neutral, > >>>>> PublicKeyToken=354554543179e"/> > >>>>> </class> > >>>>> </hibernate-mapping> > >>>>> > >>>>> - Mi entidad tipoVia > >>>>> > >>>>> <?xml version="1.0" encoding="utf-8" ?> > >>>>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" > >>>>> assembly="empresaDatos"> > >>>>> <class name="empresaDatos.TiposViaImp, empresaDatos, > >>>>> Version=1.0.0.0, Culture=Neutral, PublicKeyToken=354554543179e" > >>>>> table="U_Vias" mutable="false" > > >>>>> <id name="Codigo" column="[Via abreviada]" type="String" > >>>>> unsaved-value="-100"> > >>>>> <generator class="native" /> > >>>>> </id> > >>>>> <property name="Via" column="Via" type="String"/> > >>>>> </class> > >>>>> </hibernate-mapping> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> El 26 de mayo de 2010 00:36, José F. Romaniello > >>>>> <[email protected]> escribió: > >>>>>> > >>>>>> mappings > >>>>>> gracias > >>>>>> > >>>>>> El 25 de mayo de 2010 13:57, Mendu <[email protected]> escribió: > >>>>>>> > >>>>>>> Buenas a todos, > >>>>>>> > >>>>>>> Tengo una entidad mapeada en la que se encuentra un <many-to-one > >>>>>>> name="TipoVia" .... > >>>>>>> > >>>>>>> A la hora de consultar el log veo que aparece un select de mi > >>>>>>> entidad + un select del many-to-one a tipovia. > >>>>>>> > >>>>>>> bien, he probado todas las configuraciones, lazy, optimistic-lock, > >>>>>>> que aparece en la documentacion de la version 2.1.0 > >>>>>>> > >>>>>>> y lo unico que he conseguido es que aparezca una sola select pero > >>>>>>> sigue accediendo a TipoVia mediante left outer join. > >>>>>>> > >>>>>>> Lo que necesito es la carga perozosa, el lazy, que solo me rescate > el > >>>>>>> objeto cuando lo necesite. > >>>>>>> > >>>>>>> Se que no pongo ejemplos, me gustaria saber si esto es posible y > como > >>>>>>> en teoria lo configurais para que funcione de este modo. > >>>>>>> > >>>>>>> Muchas Gracias. > >>>>>>> > >>>>>>> -- > >>>>>>> Para escribir al Grupo, hágalo a esta dirección: > >>>>>>> [email protected] > >>>>>>> Para más, visite: > http://groups.google.com/group/NHibernate-Hispano > >>>>>> > >>>>>> -- > >>>>>> Para escribir al Grupo, hágalo a esta dirección: > >>>>>> [email protected] > >>>>>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano > >>>>> > >>>>> -- > >>>>> Para escribir al Grupo, hágalo a esta dirección: > >>>>> [email protected] > >>>>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano > >>>> > >>>> > >>>> -- > >>>> Fabio Maulo > >>>> > >>>> -- > >>>> Para escribir al Grupo, hágalo a esta dirección: > >>>> [email protected] > >>>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano > >>> > >>> -- > >>> Para escribir al Grupo, hágalo a esta dirección: > >>> [email protected] > >>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano > >> > >> -- > >> Para escribir al Grupo, hágalo a esta dirección: > >> [email protected] > >> Para más, visite: http://groups.google.com/group/NHibernate-Hispano > > > > -- > > Para escribir al Grupo, hágalo a esta dirección: > > [email protected] > > Para más, visite: http://groups.google.com/group/NHibernate-Hispano > > -- > Para escribir al Grupo, hágalo a esta dirección: > [email protected] > Para más, visite: http://groups.google.com/group/NHibernate-Hispano > -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
