Optimizar aplicación

En una red de 3 clientes y un servidor (en donde se encuentra la base de datos) que puedo hacer para mejorar el rendimiento de la aplicación ya que se torna a veces muy lenta la obtención de datos, algunas tablas contienen más de 40.000 registros y utilizo muchas consultas para realizar reportes. Soy un novato programador de VFPro y me dijeron que a este problema se lo puedria atacar por tres frentes:
* Revisar hardware de la red (inst. De componentes que transmitan datos a mayor velocidad)
* Optimizar codigo de la aplicacion
* Uno menos importante, trucos con el archivo config.fpw
Quisiera que por favor me corrijas o confirmes esto...
Roberto
[email protected]

3 Respuestas

Respuesta
1
Pues el tamaño de tu base de datos es chico a comparación de otros que he visto, por tanto las recomendaciones que te hicieron son correctas, verifica que las tarjetas de red sean de la misma velocidad así como el hub, si aun sigue el problema trata de optimizar el código
Respuesta
1
Las erecomendaciones que te dieron son las correctas (excepto lo del archivo config. Fpw, no ayuda mucho)
Lo que te recomiendo antes de empezar a meterte con el hardware es optimizar el código para evitar que realice tantas consultas (si es posible), con lo que reducirías el tráfico de la red.
Bueno, eso digo yo...
¿Qué podría utilizar en lugar de las consultas para mis informes?
El uso de consultas no es lo que posiblemente esté haciendo que se consuman los recursos; mi recomendación es que busques la manera en que, si es posible, el número de consultas sea menor.
Respuesta
1
Si tus tablas están llegando a los 40 000 registros, ya es una cantidad suficiente, para que el tiempo de establecimiento de las relaciones y consultas tome algunas fracciones segundos de más, pero como lo digo unas fracciones de segundos de más, no es para tanto, tu sabes que FOx, es muy rápido en esto. Frente a este problema tienes que adoptarlas siguientes actitudes en ese orden:
1)Revisar otra vez el Hardware y configuración de red. Crea (Si no lo haz hecho), una unidad virtual (Z:), en cada maquina cliente, que apunte a los datos de tus tablas en la maquina que los aloja("servidor"). A partir de allí, crea una variable que apunte a esta ruta. Esto aumentará, la velocidad de lectura, pues el SO, considerará esta unidad como una partición más.
2. Si haz confirmado con SEGURIDAD, que la red y la capacidad de CPU, de la maquina "servidora", no es el problema. Entonces Debes de pensar recién en optimizar tu código, insisto aún me resisto a creer que esa cantidad de registros genere demora en las consultas.
3)Otro punto es la distribución de tablas, Procura que las tablas MASTERS, o maestros (CLIENTES, PROVEEDORES, TRABAJADORES, MATERIALES, FROMAS DE PAGO, MONEDA, ETC), tengan coopias alojadas en cada maquina cliente como tablas locales, ya que según como describes, estas tablas ya tiene la suficiente madureez como para que su actualización no sea tan frecuente, en caso de que se actualicen crea un bloque de código, que al momento de iniciar cada aplicación se actualicen las copias, si haces esto, la demora de la lectura de los datos de tus consultas que utilicen esta tblas puede reducirse hasta en un (40%), te lo digo con experiencia
3) Para optimizar tu código, te aseguro que vale la pena que migres tu técnica de trabajo de tablas a VISTAS, pues estas no necesitan de relaciones, por el contrario trabajan y se define con sentencias nativas de SQL, que es lo que más debemos utilizar
4) Si utilizas reportes pesados, lo ideal es definir vistas parametrizadas en el entorno de datos, de modo que la descarga de datos es selectiva y filtrada, acelerando de manera susutancial la aparición en pantalla del reporte, se sabe que para establecer relaciones entre tablas de muchos registros, la plaicación se ralenmtiza, utiliza mejor vistas.
5) Fox pro no tiene un anlizador de consultas totalmente implementado pero puedes ayudarte de las siguiente funciones para "chequear", el nivel de optimización de tus sentencias SQL (Ya vas viendo las ventajas de trabajar los datos exclusivamente con SQL) :
SYS(3054)
SYS(3055)
Otras funciones que te permitirán chequear el rendimiento de tu código son las siguientes
SYS(1104)
SYS(1001)
SYS(23)
SYS(3055)
Espero haberte ayudado con mi concejo, a veces este tipo de orientaciones vale más que bajarte un programa fuente o un TIP.
Valga la aclaración

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas