Lento?

Experto:
Usuario:
Fecha: 18/06/2008
Valoración: (4,00 sobre 5) Categoría: Programación
18/06/2008
lerd, usuario preguntando en Programación
Usuario
Que tal...mira, mi consulta es la siguiente...Existe un programa hecho en clipper, el cual guarda datos en DBF's, el programa funciona en modo multiusuario, alojado en una PC que funciona como Servidor, mas no lo es tal, y lo acceden 6 computadoras mas...El "problema" surge ahorita al consultar cierta informacion, mas concretamente el catalogo de empleados y aquellas pantallas que hagan uso del mismo...si un usuario consulta una clave es cosa de 2 seg para que le muestre resultados, pero ya siendo 2 los usuarios que consulten, la demora se incrementa de 15 a 20 segundos....hasta hace unos meses no sucedia eso...Te doy mas detalles:
- El sistema utiliza como dije DBF's, CDX y NTX
- El catalogo genera un consecutivo de clave automatico, el cual rondaba por ahi del consecutivo 5200, pero decidieron por ahi que personal nuevo en este año se les asignara a partir del numero 8000...y no se, pero a partir de que se "partio" el consecutivo, las consultas al catalogo se volvieron lentas

- El ejecutable reside en una pc con Win XP pro y las PC estan conectadas en red Microsoft, algo sencillo.

Alguna idea?

Gracias.
18/06/2008
lerd, experto respondiendo en Programación
Experto
El que se modificara el consecutivo no afecta de manera alguna el desempeño de la aplicación, un índice es un archivo que guarda la llave y la ubicación de la misma, por lo que si la llave es consecutiva  o no carece de importancia (esa es la razón de los índices), si el ser los datos consecutivos tuviera relevancia, una búsqueda secuencial puede sustituir de manera eficaz un índice, y con mejores resultados.


Desde mi punto de vista el problema no es que se haya partido la información, es el método de búsqueda o la forma de interactuar de las tablas con los índices, como una primera aproximación sugiero que se vuelvan a generar los índices, si eso no mejora el desempeño, quizá una revaloración de la arquitectura de la aplicación y hasta una eventual migración a un desarrollo cliente-servidor podría ser considerada como una solución viable.
18/06/2008
lerd, usuario preguntando en Programación
Usuario
bien, puede que la migracion sea lo mas viable, pero seria a mediano plazo...algun ejemplo sobre la regeneracion de indices me ayudaria...Gracias de nuevo
18/06/2008
lerd, experto respondiendo en Programación
Experto
Abre con las tablas con la CLD (o la que utilices para accederlas, quizá DBU) y vuelve a generar los índices, yo cree una herramienta que leía el diccionario de datos de la aplicación y abría cada tabla, la limpiaba y volvía a generar los índices.

Dentro del diccionario incluía el nombre de la tabla, los campos que la componían y cuales de esos campos formaban parte de los índices (y de que índices), usaba la técnica de catalogo de la versión autumn-86 que Nantucket no impulsó pero que por pereza en su momento no mofdifiqué y que posteriormente demostró su utilidad, si el palzo es un poco más que "mediano", quizá te sería conveniente implementarlo.
18/06/2008
lerd, usuario preguntando en Programación
Usuario
Muy Bien. Me ha sido de gran utilidad
Enlaces patrocinados