Limite de Visual Fox Pro en terme du nombre d'enregistrement [Résolu]

cs_Limack 89 Messages postés jeudi 8 décembre 2005Date d'inscription 23 décembre 2011 Dernière intervention - 3 févr. 2009 à 10:03 - Dernière réponse : michelatoutfox 834 Messages postés mardi 5 octobre 2004Date d'inscription 7 mai 2013 Dernière intervention
- 6 mars 2009 à 14:51
Bonjour chers amis!


Je voudrais savoir s'il y'a une limite pour fox pro en terme de nombres d'enregistrements dans une table c'est-à-dire à paritr de combien d'enregistrements, fox pro peut-il craquer et ne plus repondre normalement pour la durée du traitement.
Urgent, car je dois développer une petite application qui va stocker près de 700 000 codes par jour.
Merci de vous lire très rapidement !

Cordialement Chif...
Afficher la suite 

Votre réponse

8 réponses

michelatoutfox 834 Messages postés mardi 5 octobre 2004Date d'inscription 7 mai 2013 Dernière intervention - 3 févr. 2009 à 19:46
+3
Utile
Bonjour,

limite physique:1 milliard d'enregistrement par table et moins de 2 Go par table

concrètement, tu vas avoir des problèmes de cache si tes données sont sur une unité autre que locale à partir de 1.2 Go, et à partir de 1.5 Go, il te faut te poser rapidement la question de migrer tes données ailleurs que dans des dbf!

Sans connaitre ton appli, c'est difficile de dire si ça va craquer, mais à 700000 enregistrements par jour, mieux vaut passer directement à SQL Server.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de michelatoutfox
michelatoutfox 834 Messages postés mardi 5 octobre 2004Date d'inscription 7 mai 2013 Dernière intervention - 4 févr. 2009 à 20:01
+3
Utile
Pour la lecture et l'écriture des données, VFP (comme toutes les applis sous Windows) passe par les caches propsés par Windows (cache disque, et cache réseau).

Mais quand ces caches sont très rapides (c'est le cas des machines récentes)VFP interprète mal les réponses que lui renvoie l'OS et considère parfois qu'il lui faut relire (ou réécrire) les données depuis le disque physique, alors que les données les plus récentes sont en cache.

Tu te retrouves alors avec des data qui ne sont pas ce qu'elles devraient être!!! et les Flush, Fflush, sys(1104) sont insuffisants, parcequ'en fait ils s'adressent au cache disque!

Plus les fichiers sont gros, plus l'OS met en cache, et passé une certaine limite, VFP va se planter sans jamais te remonter d'erreur!

Est-ce plus clair?
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de michelatoutfox
cs_Limack 89 Messages postés jeudi 8 décembre 2005Date d'inscription 23 décembre 2011 Dernière intervention - 4 févr. 2009 à 11:54
0
Utile
Merci MichelAtoutFox!


Mais dis, peux-tu m'expliquer l'expression "cache" ? Je ne comprends pas trop quand tu dis  "concrètement, tu vas avoir des problèmes de cache"
Merci de te lire très rapidement !

Cordialement Chif...
Commenter la réponse de cs_Limack
cs_Limack 89 Messages postés jeudi 8 décembre 2005Date d'inscription 23 décembre 2011 Dernière intervention - 5 févr. 2009 à 09:48
0
Utile
Très clair et très cool MichelAtoutFox!
Big thanks pour ton éclaircissement.
@+ pour d'autres préoccupations!

Cordialement Chif...
Commenter la réponse de cs_Limack
rao64 11 Messages postés dimanche 23 novembre 2008Date d'inscription 17 mars 2011 Dernière intervention - 4 mars 2009 à 12:42
0
Utile
Bonjour....... et merci à michel je commence à comprendre pourquoi ma requete se vautre.

Mon contexte est le suivant j'éssaie de comparer différentes solution d'analyse de données pour les auditeurs (IDEA ACL et base de données).
En matière de BDD je vais naturellement vers Vfox que j'utilise en mode programmation batch sans IHM (que perso je ne sais plus faire)
Je fais de comparaison sur des tables libres en local sur des ficheir de 5, 10, 15 millions d'enreg (15 M = 1,6 Go)

3 type de requetes sont représentatives de ce que l'on fait en audit :
* select where
*select group
*select avec jointure.

jusqu'à 15M ça marche très bien sur les deux premières (environ 3minutes de délai) mais la troisieme tourne 10 h puis "not enough memory to map file".

j'ai placé :
mm VAL(SYS(1001)) /4*.5SYS(3050,1,mm)
=SYS(3050,2,mm)
+ des index sur la clé de jointure dans les 2 tables
mais ça ne passe pas

je suis en VFP 7.0 sp1 est-ce que cela influe ?

Il est vraissemblable que nous soyons à la limite de VFP mais avant de publier un résultat dans le cadre de notre association d'auditeurs, je souhaite etre convaincu qu'il n'y a pas de problèume de réglege ou de version de mon vfp
C'est déjà pas mal du tout de secouer 10 Milion d'enreg sans problème (1 minute pour les 2 premières requetes et 8 pour une jointure interne entre la table de 10 M et une de 350 000).
Je me demande si un autre base de donnée micro et autonome (sur portable) est capable de rivaliser ?

Pour info je fais tourné vfp sur un simple portable avec XP home sp3 et 2 Go de ram, ce qui est représentatif de la config d'intervention d'un auditeur externe.

merci à ceux qui prendront le temps de commenter et ou répondre
Commenter la réponse de rao64
michelatoutfox 834 Messages postés mardi 5 octobre 2004Date d'inscription 7 mai 2013 Dernière intervention - 4 mars 2009 à 21:54
0
Utile
bonjour,

quelques éléments de réponse:

pour les grosses tables en VFP, ce n'est pas sur le sys(3050) que je joue, mais sur SET REFRESH TO 0,-1 (pour forcer la lecture depuis le disque), avec aussi du SYS(1104) pour purger les buffers de mémoire des curseurs, et du FLUSH IN ... pour forcer les écritures.

Dans ces configs de grosses tables, on a moins de problèmes en diminuant la mémoire dispo pour Fox, et en ralentissant la machine! paradoxal, mais vérifié...

VFP7 pour ce boulot? non, à mon avis, VFP9 est indispensable (+ conforme à la norme SQL 92). attention, il faudra réécrire les requètes qui ont des group by (justement pour les rendre conforme à la norme)

à première vue, je trouve les 8 minutes beaucoup trop importantes, je regarderais attentivement les champs, les index, et le niveau d'optimisation Rushmore.

Pourquoi ne pas passer tes données dès maintenant sur SQL server? les versions express sont gratuites, ça tourne parfaitement sur un portable (le mien a 2 Go de RAM, un XP SP3, avec SQL 2008).

en mettant tes data et tes requètes sur SQL (sous forme de vues et de procedures stockées acceptant tes paramètres), tu devrait pouvoir au moins régler ton pb de plantage, et probablement améliorer les perfs de ce qui fonctionne.

Et pour plus d'info, les Rencontres AtoutFox à Paris-Roissy du 18 au 20 mars!
Commenter la réponse de michelatoutfox
rao64 11 Messages postés dimanche 23 novembre 2008Date d'inscription 17 mars 2011 Dernière intervention - 5 mars 2009 à 06:47
0
Utile
Bonjour,

Merci michel pour tes précieux conseils (dommage que MS n'assume plus grand chose pour VFP). En meme temps il y a plus d'humanité dans nos forums que sur la hotline de MS
pour sql express je suis déjà en train de télécharger.

Bon cela veut dire que je devrais créer ou modifier tte table par instruction sql mais bon faut essayer notamment pour découvrir et pour parer l'éventualité ou j'aurais besoin de secouer des tables très lourdes (en expertise judiciaire cela arrive aussi). Existe t-il des outils pour dialoguer facilement par une IHM plutot que par commande sql ?

Notre handicap sur ces job c'est qu'il faut aller vite et c'est pour cela qu el'on ne prend pas toujours le temps de chercher les nouvelles solution (par ex je suis collé à fox depuis 1984 environ). On programme du très simple, on controle puis on archive.

Il faut etre honnete des tables de + de 5 M c'est très rare et ceci explique cela.
Je vais aussi essayer des modif sur les paramètres que tu m'as indiqué.

Tu parles d'optimisation rushmore, comment valides tu que celle-ci est correctement établie ?

Quant aux rencontres Atoux fox pourquoi pas pour rencontrer des gens sympa mais je ne suis plus bon a rien en dev les IHM objets sont devenues vraiement compliquées. Ma dernières appli avec IHM étaite en fox dos 2.6. je m'en sert toujours pour ma gestion et elle a passé l'an 200 et l'euro sans problème.
Je crains de ne pas trop comprendre le débats mais je serai peur etre sur paris ces jours là (j'habite près de Pau).

Donnes moi une URL m'expliquant les sujets qui seront traités mais je ne suis plus la dedans.
Ceci étant j'ai initié un proto de progiciel et je suis planté sur l'IHM. Il va donc falloir soit que je m'y mette soit que je trouve des développeurs.

Bon aller je te laise et je te dirais le résultat de cette optimisation.

A+
Commenter la réponse de rao64
michelatoutfox 834 Messages postés mardi 5 octobre 2004Date d'inscription 7 mai 2013 Dernière intervention - 6 mars 2009 à 14:51
0
Utile
Bonjour,

l'ihm pour SQL s'appelle SSMS (Sql Server Management Studio), tu trouveras son téléchargement sur la page générale de de SQL Express 2008.

Avec VFP9, nous avons maintenant un excellent outil pour accéder en direct depuis VFP à tous les serveurs SQL disponibles depuis notre poste de travail: c'est l'explorateur de données, dans lequel on mappe aussi les databases Fox, et même les répertoires de tables indépendantes. L'add-on Sedna contient une version très améliorée de cet explorateur de données.
En quelques clicks, tu extraits tes données, tu les browse, tu génères ton code pour créer les CursorAdapters que tu veux conserver en prg, etc..
C'est à mes yeux une des raisons majeures qui justifie de passer à VFP9, c'est réellement un outil extraordinaire (il te donne aussi le niveau d'optimisation Rusmore de tes requètes).

Pour Rushmore, regarde dans l'aide le SYS(3054), tout est là!

Tu trouveras le programme des Rencontres 2009 ici. Je pense que plusieurs sujets sont très proches de tes préoccupations.
Commenter la réponse de michelatoutfox

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.