Page 1 of 1

Búsqueda muy lenta en red - Solucionado

Posted: Sun Aug 01, 2010 1:11 am
by rolando
Buenas noches,

Tengo una función en la que realizo una búsqueda secuencial en todos los registros de la DBF de Trabajos realizados.

Busco una coincidencia dentro de tres campos de caracter comunes y tres campos memo cuyo contenido está grabado como RTF, cuando encuentra una coincidencia agrega el recno() del registro y algunos de sus campos a un array que luego es editado aparte. Esto está con DBF común e indices CDX usando ADS local en una red de tres pc's.

Todo esto funciona muy bién y completa una búsqueda en unos 5 segundos (un total de unos 25000 registros) EN LA PC SERVIDOR.

Si la búsqueda se realiza desde alguna de las otras dos pc's, llega a tardar unos tres minutos en completar la búsqueda.

Creería que es la demora por la red pero como estoy usando ADS local no debería pasar, ¿o sí?.

Quizás no esté usando el ADS como corresponde.

Espero alguna ayuda.

Gracias.

Rolando :D

Re: Búsqueda muy lenta en red

Posted: Mon Aug 02, 2010 12:08 am
by rolando
Buenas noches,

Sigo intentando y esperando alguna ayuda.

Intenté cambiando la función haciendo un MemoRead al fichero DBF con la intención de hacerle un AT() al fichero en memoria pero me encuentro con dos problemas.

1) Como uso ADS local, por más que abra las DBF's en modo compartido, se nota que, como el ADS es quien las manipula, las abre en modo exclusivo y por eso no carga la DBF en memoria con memoread ya que cuando hago el at() me devuelve 0. Esto no pasa si detengo el ADS.

2) Si detengo el ADS, tampoco me sirve buscar con at() en la BDF cargada con memoread, ya que uso índices CDX y campos memo FPT (que son de extensión variable), esto último hace que cada registro tenga una extensión distinta y se me hace imposible encontrar el registro con el número que me devuelve at().

¿Cómo hacen ustedes búsquedas secuenciales?

Gracias.

Rolando :D

Re: Búsqueda muy lenta en red

Posted: Mon Aug 02, 2010 12:32 am
by Marcelo Via Giglio
Rolando,

ya que utilizas DBF/CDX intenta tan solo hacer lo mismo (no con AT) pero utilizando el RDD nativo de [x]Harbour

saludos

Marcelo

Re: Búsqueda muy lenta en red

Posted: Mon Aug 02, 2010 12:48 am
by rolando
MArcelo,

Gracias por responder. Disculpá mi ignorancia pero no logro entender lo que sugieres.

Rolando :D

Re: Búsqueda muy lenta en red

Posted: Mon Aug 02, 2010 11:57 am
by Marcelo Via Giglio
Rolando,

tu dices qye estas trabajando con el RDD de ADS (Local), o lei mal? pero lo haces con DBF y CDX verdad? no con ADT, entonces lo que te sugiero como prueba es que no utilices el RDD de ADS y utiliza el RDD de [x]Harbour y pruebas, haber que diferencia encuentras, ya que yo tengo una teoria respecto al uso del RDD ADS (local) en redes locales.

saludos

Marcelo

Re: Búsqueda muy lenta en red

Posted: Mon Aug 02, 2010 1:34 pm
by rolando
Marcelo,

Te entiendo, pero la aplicación tiene al comienzo una "detección" de si el Servidor ADS está funcionando y, si no es así, dá la opción de usarlo sin ADS o salir del sistema.

Ya probé con ADS y sin ADS y es lo mismo, la lentitud es tremenda.

¿Alguna otra idea?.

Gracias.

Rolando :D

Re: Búsqueda muy lenta en red

Posted: Mon Aug 02, 2010 1:39 pm
by Marcelo Via Giglio
Rolando,

ya que utilizas ADS puedes probar la busqueda en texto FST, no lo he probado, pero seria interesante que lo hagas y nos comentes resultados :-)

saludos

Marcelo

Re: Búsqueda muy lenta en red

Posted: Mon Aug 02, 2010 1:57 pm
by pablovidal
El problema no esta en tu aplicacion, busca el problema en el cableado y en el switch de la red.
ademas recuerda que el programa envia el dbf completo por la red.-

Re: Búsqueda muy lenta en red

Posted: Mon Aug 02, 2010 9:33 pm
by rolando
MArcelo,

No se que es "texto FST". Si me lo aclaras quizás pueda intentarlo.

Pablo,

No creo que tenga que ver con el cable ni el switch. Probé todo en el ciber de un amigo (cuando está cerrado) y la lentitud es la misma. En teoría, al usar ADS no debería pasar toda la DBF por la red, sino sólo los datos solicitados.

Rolando :D

Re: Búsqueda muy lenta en red

Posted: Tue Aug 03, 2010 1:56 am
by rolando
Buenas Noches,

Avancé en esto, creo que encontré porque la búsqueda, tanto usando ADS, como sin usar ADS tardaba lo mismo (y mucho) desde una pc remota (1:30 min) y sólo 2 segundos en la pc servidor siendo que se supone con ADS debe ser má rápida.

Lo que modifiqué fue una línea de seteo del ADS.

Tenía puesto

Code: Select all

SET SERVER REMOTE


Y lo cambié por

Code: Select all

SET SERVER LOCAL
Con esto bajó el tiempo de búsqueda en una pc terminal, de 1:30 min a sólo 20 segundos (la búsqueda es secuencial en todos los registros dentro de tres campos memo guardados como RTF y tres campos comunes de caractér).

Creo que más velocidad no se puede pedir teniendo en cuenta que están por medio el switch, cableado y velocidad de la red.

Gracias.

Rolando :D

Re: Búsqueda muy lenta en red - Solucionado

Posted: Tue Aug 03, 2010 11:51 am
by Marcelo Via Giglio
Rolando,

claro que se supone que con ADS seria mas rapido, PERO con ADS server, y claro tu estas en lo correcto, tenias herrado el parametro al querer utilizar ADS LOCAL como si fuera un servidor.

PIENSO... solo PIENSO, que si buscas dentro la documentacion de ADS lo referente a busqueda rapida en texto podrias bajar mas el tiempo de busqueda, ya que lo que haces ahora es busqueda de fuerza bruta, lo que harias con ADS es crear un index para tal efecto y ADS se encargaria de lo demas, mira solo lo he leido y esto no es caracteristica de ADS exclusivamente, tambien de mayoria de otros DBMS.

Sin promesas, buscare tiempo esta noche para probar, y te comento si es que no lo haces tu antes

saludos

Marcelo

Re: Búsqueda muy lenta en red - Solucionado

Posted: Fri Aug 06, 2010 8:34 pm
by IVAN TRACHTA
Perdón por la intromisión e ignorancia quizás.
El funcionamitento del ADS en modo Server Local no tiene las mismas características ni funcionamiento del Server Remoto.
Por lo que tengo entendido, sirve para desarrollar un sistema preparado para hacerlo correr vía ADS pero en realidad no funciona como un sistema cliente/servidor. Incluso muchas de sus funcionalidades, dentro de las más importantes el control de transacciones (rollback) y otras están deshabilitadas (de hecho no pueden funcionar en un ambiente que no sea cliente/servidor).
Entiendo que en un entorno ADS Local, viaja todo el archivo por la red y esto es parte de la lentitud que tienes.

Si alguno puede aclarar y/o ampliar, mejor.

Saludos

Iván