none
Dataset Grandes y Tiempo de carga? RRS feed

  • Pregunta

  • Hola,
    estoy realizando una aplicacion que carga datos a una tabla con un dataset y una datatable, el problema es k mi tabla es grande , algo asi como 300.000,00 registros, cada vez k se entra a esa ventada tarda mucho tiempo en cargar. "da.fill(ds)"

    Que solución me plantean?
    - una q pensé es como cargar la tabla al inicio de la aplicación. y k este ya cargado en memoria para toda la aplicación y no cargar cada vez para esa ventana?
    Alguna otra solución? urgente porfa?
    viernes, 8 de enero de 2010 0:08

Respuestas

  • Bueno hernan creo que la solucion que pensastes creo que esta bien, lo que puedes hacer ya que tarda mucho, tampoco es la idea de que al inicio del programa espere hasta que cargue la tabla completa, te recomiendo que lo hagas con un hilo, para que no afecte tu inicio del programa, claro tienes que tener la condicion que cuando abras la ventana donde esta la tabla, verifique si el hilo termino de ejecutarse si no que espere.


    Blog: http://zonainformatica.wordpress.com
    viernes, 8 de enero de 2010 2:04
  • hola

    un primer planteo que deberias hacerte es porque necesitas cargar una pantalla con 300000 registros ?

    porque no proporcionas fitros a la pantalla paque que el usaurio pueda acotar la busqueda
    es mas no dejes filtros opcioneles proporciona algunos por defecto que reduzcan el nuemro de datos con el que trabajar

    bien mas alla de este planteo, si no tienes otra que trabajar con este volumne de datos, una alternativa podrias ser cachear la informacion

    para ellos implemente podrias guardar estos datos a nivel del objeto Application cuando se inicia el sitio web o sea lo cargas en el evento Application_Star del Global.asax

    esto lo que haes que que esten disponibles para cualqueir usuario el mismo grupo de datos, y cuando entre a la plantalla usas este objeto para recuperar el datatable y cargar la pantalla

    igualmente algunas advertencias

    - esto es solo valido si sabes que este grupo de datos se mantendra statico durante la ejecucion de la aplicacion, si estos datos cambian muy seguido no te servira esta tecnica de cache porque no hay forma de refescar los datos salvo que proporciones alguna opcion que los fuerce

    - mas alla que soluciones el tema de acceso a datos, lo cualrducira en algo el tiempo, queda otro problema y es el tiempo de render de la pagina, mostrar por pantalla este volumen de datos tambien insumira su tiempo, el cual puede ser elevado


    Otra tecnica si es que puedes mostrar grupos de datos, es aplicar un paginado a nive de datos, en tu db
    me refiero a alg como esto

    Paging through Records using a Stored Procedure

    Using SQL Server Stored Procedure for implementing Custom Paging

    bueno en realidad no has mencionado que db usas, pero si se trata de sql server podrias crear un stored procedure que permita paginas de forma directa, al SP le pasa el numro de la pagina que quieres recuperar y cuantos registros
    el resultado lo cargas en eld ataset
    aqu como es acotado todo el tema de cache no haria falta

    espero te sea de utilidad los comentarios
    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 8 de enero de 2010 3:30

Todas las respuestas

  • Bueno hernan creo que la solucion que pensastes creo que esta bien, lo que puedes hacer ya que tarda mucho, tampoco es la idea de que al inicio del programa espere hasta que cargue la tabla completa, te recomiendo que lo hagas con un hilo, para que no afecte tu inicio del programa, claro tienes que tener la condicion que cuando abras la ventana donde esta la tabla, verifique si el hilo termino de ejecutarse si no que espere.


    Blog: http://zonainformatica.wordpress.com
    viernes, 8 de enero de 2010 2:04
  • hola

    un primer planteo que deberias hacerte es porque necesitas cargar una pantalla con 300000 registros ?

    porque no proporcionas fitros a la pantalla paque que el usaurio pueda acotar la busqueda
    es mas no dejes filtros opcioneles proporciona algunos por defecto que reduzcan el nuemro de datos con el que trabajar

    bien mas alla de este planteo, si no tienes otra que trabajar con este volumne de datos, una alternativa podrias ser cachear la informacion

    para ellos implemente podrias guardar estos datos a nivel del objeto Application cuando se inicia el sitio web o sea lo cargas en el evento Application_Star del Global.asax

    esto lo que haes que que esten disponibles para cualqueir usuario el mismo grupo de datos, y cuando entre a la plantalla usas este objeto para recuperar el datatable y cargar la pantalla

    igualmente algunas advertencias

    - esto es solo valido si sabes que este grupo de datos se mantendra statico durante la ejecucion de la aplicacion, si estos datos cambian muy seguido no te servira esta tecnica de cache porque no hay forma de refescar los datos salvo que proporciones alguna opcion que los fuerce

    - mas alla que soluciones el tema de acceso a datos, lo cualrducira en algo el tiempo, queda otro problema y es el tiempo de render de la pagina, mostrar por pantalla este volumen de datos tambien insumira su tiempo, el cual puede ser elevado


    Otra tecnica si es que puedes mostrar grupos de datos, es aplicar un paginado a nive de datos, en tu db
    me refiero a alg como esto

    Paging through Records using a Stored Procedure

    Using SQL Server Stored Procedure for implementing Custom Paging

    bueno en realidad no has mencionado que db usas, pero si se trata de sql server podrias crear un stored procedure que permita paginas de forma directa, al SP le pasa el numro de la pagina que quieres recuperar y cuantos registros
    el resultado lo cargas en eld ataset
    aqu como es acotado todo el tema de cache no haria falta

    espero te sea de utilidad los comentarios
    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 8 de enero de 2010 3:30