Skip site navigation (1) Skip section navigation (2)

vb Problemas al migrar de Access a Postgres.(recordset muy lento)

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 (view raw or flat)
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!!!*

Responses

pgsql-es-ayuda by date

Next:From: Victor LopezDate: 2007-02-24 16:12:18
Subject: Re: Estoy?
Previous:From: Gabriel ColinaDate: 2007-02-24 16:03:28
Subject: Re: Una respuesta graciosa

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group