Ver Mensaje Individual
  #6 (permalink)  
Antiguo 29/10/2007, 11:49
Avatar de GeoAvila
GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 21 años, 4 meses
Puntos: 53
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 twitter: @GeoAvila