Foros del Web » Programación para mayores de 30 ;) » .NET »

Millones de registros en datagridview

Estas en el tema de Millones de registros en datagridview en el foro de .NET en Foros del Web. Tengo un problema con mi datagridview, cuando hago la consulta a la tabla que tengo en mysql, me devuelve 10 millones de registros, nose como ...
  #1 (permalink)  
Antiguo 18/07/2009, 09:35
 
Fecha de Ingreso: julio-2009
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
Millones de registros en datagridview

Tengo un problema con mi datagridview, cuando hago la consulta a la tabla que tengo en mysql, me devuelve 10 millones de registros, nose como hacer para que todos los registros puedan ser vistos en la datagridview sin que la aplicacion tenga que colgarse, ya que consume gran cantidad de RAM.

Mi objetivo es mostrarlo todos los registros en una datagridview en C# sin tener que paginarlo, intente usando la propiedad virtualmode cambiando su valor a true pero no vi mejoras.
  #2 (permalink)  
Antiguo 18/07/2009, 09:56
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 9 meses
Puntos: 15
Respuesta: Millones de registros en datagridview

No entiendo porque se complican tanto, no existe persona en el mundo que necesite 1 millón de registros para procesarlos o leerlos.

Siempre cuando se tienen tantos datos se usan filtros para ir agrupandolos por tipos y manipularlos.

El paginador de el GridView carga todo en memoria lo que no es para nada un paginador funcional que se recomiende su uso.

Te dejo este artículo donde explican como paginar con Sql Server 2005 usando casi el mismo método de Mysql.

http://www.dotnetpanama.com/dotnetpa...QL-Server.aspx

Saludos,
  #3 (permalink)  
Antiguo 18/07/2009, 09:59
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Millones de registros en datagridview

10 millones de registros en MySQL?, disculpa pero creo que no elegiste el mejor motor de base de datos (Solo opinion personal)

Puedes usar dataReader, pero indudablemente tienes que usar paginacion, no se me ocurre otra mejor idea.

Pero cuentanos cual es tu caso, porque mostrar 10 millones de registros, si igual en la grilla a lo mucho lo vas a poder ver de 25 en 25 (dependiendo del tamaño de tu grilla) , el resto lo vas a poder ver solo usando el scroll, podrias optmizar esto (cargado solo el numero de registros que se vean en tu grilla y no tener que cargar todos los registros ), pero se te va a hacer mas complicado
__________________
Vivir para ser buenos y ser buenos para servir mejor.

Última edición por boluart; 18/07/2009 a las 10:05
  #4 (permalink)  
Antiguo 18/07/2009, 10:12
 
Fecha de Ingreso: julio-2009
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Millones de registros en datagridview

la idea de mostrar de 25 en 25 es lo mas cerca que leido, pero usar paginacion es lo que no quiero, lei en alguna parte que recomiendan usar hilos pero no tengo idea de como hacer el codigo que muestre otros datos cuando el usuario mueva el scroll de la datagrid.
  #5 (permalink)  
Antiguo 18/07/2009, 11:07
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Millones de registros en datagridview

me referia a usar Limit en Mysql y traer los datos por bloques(bloques de 25 reg) , y por otro lado trabajar en el evento Paint de la grilla y capturar en que posisicon del scroll te encuentras, y asi si te encuentras en la ultima, traer el siguiente bloque o si te encuentras al inicio traer el bloque anterior,
Pero lo verdad lo veo demasiado complicado debe de haber otra manera de hacer lo que quieres.
Comentanos lo que quieres hacer, y a que se deben tanto registros podriamos ayudarte mejor
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #6 (permalink)  
Antiguo 18/07/2009, 11:45
 
Fecha de Ingreso: julio-2009
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Millones de registros en datagridview

estoy realizando un sistema de auditoria, y para esto necesito que exita una grilla o jtable que pueda mostrar al usuario todos los registros de una tabla de la DB, algunas tablas contienen 50 mil registros, esas funcionan bien pero hay otras tablas en la DB que contienen 7 o 10 millones de registros, necesito que las grillas puedan mostrar esas cantidades de datos en una grilla, el usuario necesita que todo sea en una sola pantalla sin tener que navegar en paginas. para poder observar a detalle todo.
  #7 (permalink)  
Antiguo 19/07/2009, 08:53
 
Fecha de Ingreso: enero-2007
Ubicación: Tingo María - Perú
Mensajes: 399
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: Millones de registros en datagridview

me parece bien que muestres toda la info de la auditoria, Pero porque no lo filtras por fechas, actualmente termine un sistema de auditoria y me pasaba que en la grilla habia tanta info que el usuario no podia ver bien la info (a pesar de que manejo otros colores para las filas alternadas), y de ahi lo filtre por fecha, que por defecto se muestre toda la info del dia actual y con opcion a que pueda cambiar estas fechas , y se hizo mas entendible la data.

Ahora respondiendo a tu respuesta no creo que se pueda hacer lo que quieres tal y como te lo planteas (sin usar paginacion y sin que se cuelgue)
__________________
Vivir para ser buenos y ser buenos para servir mejor.
  #8 (permalink)  
Antiguo 19/07/2009, 11:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Millones de registros en datagridview

El problema en definitiva es que estás confundiendo la fuente de datos de la auditoría con el resultado de la auditoría.
Nadie en su sano juicio va ponerse a mirar los datos crudos de una auditoría. Lo que uno analiza es el resultado del resumen, y luego, si hay información que requiere detalle, se examina esa, con un nivel de detalle escalonado.
Nadie, repito, nadie se pondrá jamás a leer 10.000.000 de registros. ¿Para qué lo haría?, si para saber lo que necesita solamente requiere un reporte de como mucho dos páginas.
Creo que tienes que dar unos pasos atrás y primero establecer qué tipo de información debe devolver la aditoría, cómo acceder a la información consolidada y cómo a los diferentes niveles de detalle. Todo esto, antes de ponerte a planear formularios y consultas.

Creo que darte una vuelta por los manuales de auditorías de los DBMS Oracle, SQL Server y DB2 te pueden servir de inspiración.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 20/07/2009, 06:40
 
Fecha de Ingreso: julio-2009
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Millones de registros en datagridview

Nose si conocen pero hay un software llamado IDEA que es usado por auditores, es un software muy bueno por lo que vi, y tiene la capacidad de mostrar la cantidad de 10 millones de registros en una grilla sin ningun problema de lentitud, mi pregunta es ¿cómo lo hace?.
  #10 (permalink)  
Antiguo 20/07/2009, 06:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Millones de registros en datagridview

Yo puedo mostrar los 10.000.000 de registros de diversas formas, pero lo que debes preguntarte, insisto es ¿qué utilidad le reporta a un usuario poder leer una tabla con esa cantidad de registros? ¿Va a sacar alguna información de ella?
¿Cuál es el objetivo final? SI estás planteando una aplicación de análisis, no requieres listados tan extensos. Necesitas información, no datos (estoy planteando los términos desde su significado en Análisis de Sistemas).

En definitiva, lo que quiero expresar es que estás planteando agregar una funcionalidad a la aplicación que carece de utilidad para el usuario, y no retorna información útil.

Hacerlo para ver si se puede, es un interesante experimento... pero ¿quién lo usaría?, si tan solo pasar los registros, leyendo rápidamente te llevaría casi todo el día (sin detectar nada útil porque la capacidad de percepción se pierde después de algunos minutos ante semejante tabla).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 20/07/2009 a las 06:53
  #11 (permalink)  
Antiguo 20/07/2009, 06:55
 
Fecha de Ingreso: julio-2009
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Millones de registros en datagridview

De hecho se sacara informes de ello, se exportaran los mismos datos de la grilla al computador para importarlos a otro sistema, y bueno los que me requirieron este sistema de auditoria me pidieron que se parezca al software idea, que es capaz de mostrar todos los registros en una sola grilla y los analiza moviendo el scroll.
  #12 (permalink)  
Antiguo 20/07/2009, 07:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Millones de registros en datagridview

Vamos a los hechos, dejando de lado las consideraciones anteriores:
1. Un datagrid tiene como límite de representación, en sistemas de 32 bits, el valor de un Integer (4 bytes), lo que significa que un datagrid puede contener entre 0 a 2.147.483.647 registros.
2. Una cantidad excesivamente grande reduce la performance de la aplicación por al menos dos razones. a) Una tabla de datos está en memoria, por lo cual 10 millones de registros, siendo cada uno de la menos 100 bytes, implica que se requiere 1 Gb solamente para almacenar los datos en la memoria (overflow potencial). b) Los procesos requeridos para el mostrado agregan un overhead al sistema que puede reducir la velocidad de los procesos en ejecución (process lock potencial).
3. La lectura dinámica de datos produce un efecto devastador en la performance de la conexión a los datos.

En cualquier caso, el acceso a una tabla de datos semejante elevará los requisitos de hardware del sistema.

Fuera de eso, no deberías tener problema en implementarlo (yo uso simplemente DataGrids para acceder a 1.000.000 registros y el sistema ni pestañea)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 20/07/2009, 17:33
 
Fecha de Ingreso: julio-2009
Mensajes: 12
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Millones de registros en datagridview

si no es mucho pedir me ayudaria demasiado algun ejemplo que contenga filtros o algun otro codigo que me ayude con el manejo de 10 millones de registros en datagrid, ya sea lo mas aconsejable.
  #14 (permalink)  
Antiguo 21/07/2009, 06:55
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Respuesta: Millones de registros en datagridview

10 millones es una locura y obtenerlos aún más, te podríamos decir mil y un formas de obtenerlos pero como dice gnzsoloyo el performance y memoria de tu equipo estarían al límite, tanto así que ni siquiera pudieras obtener ni una cuarta parte de lo que necesitas.

Pero una posible solución sería usar los cursores de MySql para traer la información segmentada (podrían ser 10 cursores de 1 millon), pero he de recordarte que todo el performance de velocidad de tu aplicación influye en la capacidad de tu manejador de base de datos y por su puesto en las capacidades de tu equipo (hardware) y la red si se encuentra en cliente/servidor como intranet o red WAN.

Podrías ir al subforo de MySql para que igual allí te den una ayudadita, pero creo que allí te van a decir los mismos comentarios.
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #15 (permalink)  
Antiguo 21/07/2009, 08:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Millones de registros en datagridview

Volviendo a lo que explicas del uso (post 11), creo que se están cruzando las cosas respecto al requerimiento que te dan: Los 10 millones de registros, ¿los necesitan para transferirlos a otra base, o para leerlos?
- Si los quieren transferir, no necesitas leerlos en un DataGrid. Solamente enviarlos, cosa que se puede hacer de muchas otras formas.
- Si los van a leer, en todo caso hay que pedirles que confirmen si realmente los leerán uno por uno (lo que francamente no creo), o si lo que quieren es sacar de ellos cierta información ya consolidada. SI así fuese, la cosa se simplifica y hay que tratar de resolverlo por medio de la base de datos, obteniendo la información ya filtrada. Ponerse a hacer algo en la aplicación que la base de datos hace mejor (y viceversa) es desperdiciar las capacidades.

En síntesis: Sería mejor saber más detalles de qué info necesitan y cómo van a usar la info para de esa forma diseñar mejor qué es lo que hay que obtener y qué es lo que hay que mostrar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #16 (permalink)  
Antiguo 22/07/2009, 08:56
 
Fecha de Ingreso: septiembre-2008
Mensajes: 68
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Millones de registros en datagridview

Como se decia en las respuesta anteriores, no se vee la necesidad de mostrar los 10 millones de registros en un datagrid, lo ideal es hacer un análisis del caso, primeramente consultar con las personas que usarán el sistema de cuales son sus requerimientos y la información más relevante o la que usarán a menudo, si en realidad se vio que existe un sistema llamado "IDEA" y porque lo quieren igual a ese, la mejor opcìón seria proponer un sistema mejor que ese y hacerlo mediante consultar rápidas usando varios métodos y si es posible con atajos en las teclas, de esa manera se puede innovar en su uso (Acceso rápido a la información, menos cansancio para la vista, trabajo más productivo y compatibilidad con un sistema sin tener que gastar tanto dinero en repotenciarlo).
Esos son puntos importantes del análisis :). Suerte en tu trabajo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:07.