Retroceder   Foros del Web > Temas generales de computación > Programación > Visual Basic

Respuesta
 
Herramientas Desplegado
Antiguo 25-oct-2007, 03:13   #1 (permalink)
mmanzano no se puede cailificar en este momento
 
Fecha de Ingreso: julio-2007
Mensajes: 10
Pregunta Gasto alto en memoria atacando bases mysql y archivo texto

Hola:

He realizado un programa en visual basic que crea 4 recordsets a una base de datos mysql a través de un dsn para escribir en ellas. Las conexiones son del tipo:

Código:
Set CONEXION = New Connection
CONEXION.CursorLocation = adUseClient
CONEXION.Open "DSN=nombre;uid=usuario;pwd=password;"

Dim REC1 As ADODB.Recordset
Set REC1 = New Recordset
REC1.Open "tabla1", CONEXION, adOpenStatic, adLockOptimistic
Tengo la sensación de que algo falla al abrir las conexiones ya que cuando se abren el sistema pide más memoria. Llega a usar aproximadamente 1'5 GB de maemoria (haciendo uso de la memoria virtual, claro).

El proceso que sigue a esto es copiar un fichero de más de 100 MB en otro con la instruccion FileCopy. Una vez hecho esto se procesa leyendo linea a linea con Line Input #log, linea e incorporando los datos en la base de datos.

No sé si estoy haciendo algo mal pues me parece excesivo el uso de memoria. Si no veís nada raro hasta aquí puedo daros más información.
mmanzano está desconectado   Responder Citando
Antiguo 25-oct-2007, 08:06   #2 (permalink)
Laforge ha deshabilitado el karma
 
Avatar de Laforge
 
Fecha de Ingreso: noviembre-2004
Ubicación: Galaxia 34, Cuadrante 972, Área 31
Mensajes: 157
Re: Gasto alto en memoria atacando bases mysql y archivo texto

... no será que esa tabla que abres con el RS es ENORME? Yo utilizo conexiones a BDD MySQL externas (no uso DSN, sino que apunto directo a la dirección del server) y nunca he tenido más problema que el que puedas tener al realizar consultas a una BDD de más de 3Gb..... vamos que tarda un poco en realizar la consulta, pero nada más....
__________________
Nunca esperes un mejor momento para abrir esa botella de vino...........nunca llega.

No hay vida después de MySQL
Laforge está desconectado   Responder Citando
Antiguo 25-oct-2007, 15:04   #3 (permalink)
mmanzano no se puede cailificar en este momento
 
Fecha de Ingreso: julio-2007
Mensajes: 10
Cool Re: Gasto alto en memoria atacando bases mysql y archivo texto

Mis bases de datos ahora ocupan mucho espacio pero el programa siempre ha tirado de mucha memoria aún cuando no tenían nada o casi nada las tablas. Lo digo por que a veces falla y tengo que estar a mano viendo el problema. Y claro cuando lanzo el programa a ejecutarse para hacer pruebas mi ordenador se queda inutilizable.
mmanzano está desconectado   Responder Citando
Antiguo 26-oct-2007, 01:19   #4 (permalink)
mmanzano no se puede cailificar en este momento
 
Fecha de Ingreso: julio-2007
Mensajes: 10
Re: Gasto alto en memoria atacando bases mysql y archivo texto

A ver, he echado un vistazo a las bases de datos y tengo en total unos 14 campos varchar de 200 caracteres. ¿Puede influir esto en el gasto de memoria?

Un saludo.
mmanzano está desconectado   Responder Citando
Antiguo 27-oct-2007, 03:37   #5 (permalink)
ReViJa está en el buen camino
 
Fecha de Ingreso: abril-2007
Mensajes: 177
Re: Gasto alto en memoria atacando bases mysql y archivo texto

Todo influye a la hora de consumir recursos, no es lo mismo un campo Byte que un campo VarChar(200) pero no creo que sea ese tu problema.

Pero como comenta el compañero Laforge si la tabla es muy grande y los campos no están bien estructurados la consulta puede demorarse algunos segundos pero no desesperes y si puedes no cargues toda la tabla, carga solo lo que necesite el usuario.

Tampoco pones mucho code para que veamos si la carga es correcta desde el principio de la aplicación.

Un saludo.
ReViJa está desconectado   Responder Citando
Antiguo 29-oct-2007, 11:49   #6 (permalink)
Colaborador
GeoAvila llegará a ser famoso muy prontoGeoAvila llegará a ser famoso muy prontoGeoAvila llegará a ser famoso muy pronto
 
Avatar de GeoAvila
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 3.842
Enviar un mensaje por MSN a GeoAvila Enviar un mensaje por Yahoo  a GeoAvila Enviar un mensaje por Skype™ a GeoAvila
Re: Gasto alto en memoria atacando bases mysql y archivo texto

Cita:
Iniciado por mmanzano Ver Mensaje
Hola:

He realizado un programa en visual basic que crea 4 recordsets a una base de datos mysql a través de un dsn para escribir en ellas. Las conexiones son del tipo:

Código:
Set CONEXION = New Connection
CONEXION.CursorLocation = adUseClient
CONEXION.Open "DSN=nombre;uid=usuario;pwd=password;"

Dim REC1 As ADODB.Recordset
Set REC1 = New Recordset
REC1.Open "tabla1", CONEXION, adOpenStatic, adLockOptimistic
Tengo la sensación de que algo falla al abrir las conexiones ya que cuando se abren el sistema pide más memoria. Llega a usar aproximadamente 1'5 GB de maemoria (haciendo uso de la memoria virtual, claro).

El proceso que sigue a esto es copiar un fichero de más de 100 MB en otro con la instruccion FileCopy. Una vez hecho esto se procesa leyendo linea a linea con Line Input #log, linea e incorporando los datos en la base de datos.

No sé si estoy haciendo algo mal pues me parece excesivo el uso de memoria. Si no veís nada raro hasta aquí puedo daros más información.
En lo personal lo que yo haría es colocar un top a la consulta para poder obtener únicamente el numero de registros al abrir la tabla, para que esto no te devuelva la data en bruto, también algo que debes de hacer es quitar los campos que no usas.

por ejemplo

Select top 10 id_empleado,nombre_empleado from Tbl_empleados

haciendo una consulta un tanto mucho más rápida que la inicial, y para guardar no tenes la necesidad de abrir un recordset lo podes hacer directamente desde la conexión de la base de datos..

Db.execute "Insert into Tbl_empleados values(100,'Juan Perez')"

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com
GeoAvila está desconectado   Responder Citando
Antiguo 30-oct-2007, 04:11   #7 (permalink)
mmanzano no se puede cailificar en este momento
 
Fecha de Ingreso: julio-2007
Mensajes: 10
Sonrisa Re: Gasto alto en memoria atacando bases mysql y archivo texto

Me parece que poco a poco voy teniendo las cosas más claras. La verdad es que no había pensado en todo lo que estaís argumentando pero tiene bastante sentido.

Por ahí arriba me han pedido que coloque más código para ver que puede estar fallando:

Para insertar uso:

Código:
tabla1_rec.AddNew
tabla1_rec!fecha = fecha(cortarcampo(linea, ",", 1))
tabla1_rec!hora = hora(cortarcampo(linea, ",", 1))
tabla1_rec!local = cortarcampo(linea, ",", 2)
tabla1_rec!idlog = cortarcampo(linea, ",", 7)
tabla1_rec!serie = cortarcampo(linea, ",", 11)
tabla1_rec!iporigen = cortarcampo(linea, ",", 14)
tabla1_rec!puertoorigen = cortarcampo(linea, ",", 15)
tabla1_rec!ipdestino = cortarcampo(linea, ",", 16)
tabla1_rec!puertodestino = cortarcampo(linea, ",", 17)
tabla1_rec!idcat = 0
tabla1_rec!categoria = "Filtrado manual"
tabla1_rec!dominio = cortarcampo(linea, ",", 19)
tabla1_rec!estado = cortarcampo(linea, ",", 21)
tabla1_rec!mensaje = cortarcampo(linea, ",", 22)
tabla1_rec.Update
Por eso veo díficil usar un inser into aunque no descabellado, es más lo considero una buena idea.

Un saludo.
mmanzano está desconectado   Responder Citando
Antiguo 30-oct-2007, 11:02   #8 (permalink)
Colaborador
GeoAvila llegará a ser famoso muy prontoGeoAvila llegará a ser famoso muy prontoGeoAvila llegará a ser famoso muy pronto
 
Avatar de GeoAvila
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 3.842
Enviar un mensaje por MSN a GeoAvila Enviar un mensaje por Yahoo  a GeoAvila Enviar un mensaje por Skype™ a GeoAvila
Re: Gasto alto en memoria atacando bases mysql y archivo texto

Cita:
Iniciado por mmanzano Ver Mensaje
Me parece que poco a poco voy teniendo las cosas más claras. La verdad es que no había pensado en todo lo que estaís argumentando pero tiene bastante sentido.

Por ahí arriba me han pedido que coloque más código para ver que puede estar fallando:

Para insertar uso:

Código:
tabla1_rec.AddNew
tabla1_rec!fecha = fecha(cortarcampo(linea, ",", 1))
tabla1_rec!hora = hora(cortarcampo(linea, ",", 1))
tabla1_rec!local = cortarcampo(linea, ",", 2)
tabla1_rec!idlog = cortarcampo(linea, ",", 7)
tabla1_rec!serie = cortarcampo(linea, ",", 11)
tabla1_rec!iporigen = cortarcampo(linea, ",", 14)
tabla1_rec!puertoorigen = cortarcampo(linea, ",", 15)
tabla1_rec!ipdestino = cortarcampo(linea, ",", 16)
tabla1_rec!puertodestino = cortarcampo(linea, ",", 17)
tabla1_rec!idcat = 0
tabla1_rec!categoria = "Filtrado manual"
tabla1_rec!dominio = cortarcampo(linea, ",", 19)
tabla1_rec!estado = cortarcampo(linea, ",", 21)
tabla1_rec!mensaje = cortarcampo(linea, ",", 22)
tabla1_rec.Update
Por eso veo díficil usar un inser into aunque no descabellado, es más lo considero una buena idea.

Un saludo.
justamente así lo hacía yo.. en una aplicación, y lo cambié al insert into y me funciónó de mil maravillas...

pero lo podes hacer como te describí arriba..

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com
GeoAvila está desconectado   Responder Citando
Antiguo 30-oct-2007, 12:21   #9 (permalink)
ReViJa está en el buen camino
 
Fecha de Ingreso: abril-2007
Mensajes: 177
Re: Gasto alto en memoria atacando bases mysql y archivo texto

Pues yo lo recomiendo encarecidamente ya que la velocidad es incomparable.

Un saludo.
ReViJa está desconectado   Responder Citando
Antiguo 30-oct-2007, 15:39   #10 (permalink)
mmanzano no se puede cailificar en este momento
 
Fecha de Ingreso: julio-2007
Mensajes: 10
Re: Gasto alto en memoria atacando bases mysql y archivo texto

pues tomo nota.... intentaré hacerlo así cuando tenga ratos libres XD

Muchisimas gracias por vuestra ayuda. Me da cosa no haber colaborado con respuestas en otros foros pero es que son mogollón de mensajes al cabo del dia... creo que lo mejor será buscar un foro donde me adapte bien e intentar ayudar en ese foro sólo.

Lo intentaré.
mmanzano está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 20:44.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93