From: | "Cesar Cejas" <cesar73(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | vb Problemas al migrar de Access a Postgres.(recordset muy lento) |
Date: | 2007-02-24 16:06:05 |
Message-ID: | 63213b0f0702240806r7444160eqd796d51339151237@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola! Gente,
*Primero cuento cual es mi situacion:*
1-Tengo una aplicacion en vb para generar informes para el area de soporte
tecnico(en este caso necesito transacciones online) y administrasion (en
este caso necesito tener todo el historia de las transacciones) .
2- Actual mente la base de datos en access que ocupa 300MB, y la tabla mas
grande es la tabla Transacciones con 900.000 registros.
3- La base de datos estaba montada en una unidad de red, y no tenia ningun
motod de base de datos.
4- Actual mente estoy migrando la base de datos a postgre.
5- Para conectarme a postgre estoy utilizando desde VB odbc (ADODB). Tuve
que instalar los drivers de postgre para que esta conexion funcionara.
*Les cuento los problemas que me surgieron:*
1- En mi codigo de VB anterior, utilizaba varias veces el metodo "recordset.
*GetRows()".* Cuando quiero utilizar este metodo. Se queda analizando la
consulta por tiempo indeterminada (me refiero a indeterminado a 30minutos).
Consumiendo el 100% del servidor. El servidor POSTGRE que estoy utilizando
es un DUALCORE 3000. CON 1GB DE RAN.
Ejemplo:
**
'Consulta las transacciones pendientes
SQL = "SELECT id_tr FROM Transacciones " & _
"WHERE estado In ('PEN','PROC','DIF') AND tipo<>'LOGIN'
rsTec.Open SQL, cnTec, adOpenDynamic, adLockOptimistic
*trPen() = rsTec.GetRows()*
rsTec.Close
**
*2-* Mi otro problema es cuando ejecuto alguna consulta en la tabla
Transacciones (900.000 registros). La consulta no tarda mucho en ser
ejecutada. Tarda cuando quiero laburar con los resultados de la consulta
ejemplo:
**
'Actualizo las Transacciones_Pendientes
* SQL = "SELECT id_tr FROM Transacciones " & _
"WHERE estado In ('PEN','PROC','DIF') AND tipo<>'LOGIN'*
rsTec.Open SQL, cnTec, adOpenDynamic, adLockOptimistic
'ESTA CONSULTA TRAE ALREDEDOR DE 400 REGISTROS. EL CAMPO id_tr es del tipo
bigint.
while not *rsTec.eof*
'Consulto las Transacciones_Pendientes en Telphos
SQL = "SELECT id, confirmed_timestamp, status FROM transaction WHERE
id = '" & *rsTec!id_tr* & ";"
rsServidor2.Open SQL, cnServidor2, adOpenForwardOnly, adLockOptimistic
SQL = "INSERT INTO tablaX ( ..., ... , ... ,,. ,,. ) VALUES (....,
......, ......., ......., )
rsTec2.Open SQL, cnTec, adOpenDynamic, adLockOptimistic
*rsTec.MOVENEXT ' mi problema esta en esta instruccion despues de
procesar 150 o 200 registros , el movenext *
* tarada cada ves mas en pasar de
registro. Esto se pone muy lento a medido q sigo ejecutando *
* el movenext. Tarda entre 10 y 15
segundos en hacer el movenext.*
**
wend
*Espero haber sido claro en mi problema. Dedes ya muchas gracias!!!*
From | Date | Subject | |
---|---|---|---|
Next Message | Victor Lopez | 2007-02-24 16:12:18 | Re: Estoy? |
Previous Message | Gabriel Colina | 2007-02-24 16:03:28 | Re: Una respuesta graciosa |