Búsqueda muy lenta en red - Solucionado

Post Reply
User avatar
rolando
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Búsqueda muy lenta en red - Solucionado

Post 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
Last edited by rolando on Tue Aug 03, 2010 1:57 am, edited 1 time in total.
User avatar
rolando
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Búsqueda muy lenta en red

Post 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
Marcelo Via Giglio
Posts: 1033
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Búsqueda muy lenta en red

Post 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
User avatar
rolando
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Búsqueda muy lenta en red

Post by rolando »

MArcelo,

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

Rolando :D
Marcelo Via Giglio
Posts: 1033
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Búsqueda muy lenta en red

Post 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
User avatar
rolando
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Búsqueda muy lenta en red

Post 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
Marcelo Via Giglio
Posts: 1033
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Búsqueda muy lenta en red

Post 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
User avatar
pablovidal
Posts: 398
Joined: Thu Oct 06, 2005 10:15 pm
Location: Republica Dominicana
Contact:

Re: Búsqueda muy lenta en red

Post 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.-
Saludos,

Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
User avatar
rolando
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Búsqueda muy lenta en red

Post 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
User avatar
rolando
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Búsqueda muy lenta en red

Post 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
Marcelo Via Giglio
Posts: 1033
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Búsqueda muy lenta en red - Solucionado

Post 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
IVAN TRACHTA
Posts: 44
Joined: Fri Feb 03, 2006 6:42 pm
Location: FORMOSA - ARGENTINA

Re: Búsqueda muy lenta en red - Solucionado

Post 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
Post Reply