OVH Cloud OVH Cloud

Performances décevantes de HF7

37 réponses
Avatar
...
Bonjour,

Soit une table contenant 427943 enregistrements.
Nous la créons de façon identique sous MySQL et HF7.

Nous lançons ensuite la requête :
select count(*) from entite

Sous MySQL, le temps d'exécution est de 0.08s
Sous HF7, nous obtenons 67.18s à la première exécution, et entre 8.20s et
8.70s pour les suivantes.

Notre requête est pourtant très simple, et devrait s'exécuter aussi
rapidement qu'un hNbEnr(ENTITE).

Pourquoi HF7 est-il si lent ? Pourquoi la 1ère requête prend-elle tant de
temps ?

La taille de notre table de test est très loin des 300 milliards
d'enregistrements annoncés dans la pub de Windev. Nous pensons donc que nous
avons fait une erreur quelque part, mais laquelle ? Nous obtenons des temps
similaires si nous lançons la requête dans WdSQL ou dans notre application.

Notre projet doit fonctionner indifféremment sous HF7 et MySQL, et nous
souhaitons donc que le code des requêtes soit, si possible, identique.

Merci

...
(anonymat pour éviter des accusations de dénigrement)

10 réponses

1 2 3 4
Avatar
Manu
> Bonjour,

Soit une table contenant 427943 enregistrements.



Une pacotille quoi...

Nous la créons de façon identique sous MySQL et HF7.

Nous lançons ensuite la requête :
select count(*) from entite

Sous MySQL, le temps d'exécution est de 0.08s



en mode ligne de commande ou dans l'appli ?

Sous HF7, nous obtenons 67.18s à la première exécution, et entre 8.20s et
8.70s pour les suivantes.



Dans les deux cas le temps constaté est normal (à la rigueur il manquerait
la machine sur laquelle la comparaison a été faite et l'environnement ainsi
que la version MySQL).

Notre requête est pourtant très simple, et devrait s'exécuter aussi
rapidement qu'un hNbEnr(ENTITE).



Je pense que là vous lisez directement dans les méta données du "fichier" a
contrario de la requete qui lit le fichier (normal vous lui demandais un
count(*))

Pourquoi HF7 est-il si lent ? Pourquoi la 1ère requête prend-elle tant de


temps ?

HF7 comme la majorité des SGBD se base maintenant sur ses statistiques. On
les mets à jour avec les HOptimiseRequete(). Sinon si il n'y a aucun index,
tout le fichier est parcouru. Quels sont les temps si vous mettez un index
(une table sans index c'est une table sans PK donc une table de travail...)
?

Le premier temps plus lent c'est normal c'est la phase de préparation de la
requete...

La taille de notre table de test est très loin des 300 milliards
d'enregistrements annoncés dans la pub de Windev. Nous pensons donc que


nous
avons fait une erreur quelque part, mais laquelle ? Nous obtenons des


temps
similaires si nous lançons la requête dans WdSQL ou dans notre


application.

Notre projet doit fonctionner indifféremment sous HF7 et MySQL, et nous
souhaitons donc que le code des requêtes soit, si possible, identique.



> (anonymat pour éviter des accusations de dénigrement)

No comment
Avatar
fabien lavoie
Est-ce que quelqu'un a une explication?

Est-ce normal ?

--
Fabien Lavoie
Solution Informatique Roxton
Division de 9081-3619 Quebec Inc . (PIECES AUTOS ROXTON)

Téléphone : (450) 378-5275
Cellulaire : (450) 521-3352
Tel Bureau Roxton : (450) 777-3113

"Manu" a écrit dans le message de
news:ca7698$a3h$
> Bonjour,
>
> Soit une table contenant 427943 enregistrements.

Une pacotille quoi...

> Nous la créons de façon identique sous MySQL et HF7.
>
> Nous lançons ensuite la requête :
> select count(*) from entite
>
> Sous MySQL, le temps d'exécution est de 0.08s

en mode ligne de commande ou dans l'appli ?

> Sous HF7, nous obtenons 67.18s à la première exécution, et entre 8.20s


et
> 8.70s pour les suivantes.

Dans les deux cas le temps constaté est normal (à la rigueur il manquerait
la machine sur laquelle la comparaison a été faite et l'environnement


ainsi
que la version MySQL).

> Notre requête est pourtant très simple, et devrait s'exécuter aussi
> rapidement qu'un hNbEnr(ENTITE).

Je pense que là vous lisez directement dans les méta données du "fichier"


a
contrario de la requete qui lit le fichier (normal vous lui demandais un
count(*))

> Pourquoi HF7 est-il si lent ? Pourquoi la 1ère requête prend-elle tant


de
temps ?

HF7 comme la majorité des SGBD se base maintenant sur ses statistiques. On
les mets à jour avec les HOptimiseRequete(). Sinon si il n'y a aucun


index,
tout le fichier est parcouru. Quels sont les temps si vous mettez un index
(une table sans index c'est une table sans PK donc une table de


travail...)
?

Le premier temps plus lent c'est normal c'est la phase de préparation de


la
requete...

> La taille de notre table de test est très loin des 300 milliards
> d'enregistrements annoncés dans la pub de Windev. Nous pensons donc que
nous
> avons fait une erreur quelque part, mais laquelle ? Nous obtenons des
temps
> similaires si nous lançons la requête dans WdSQL ou dans notre
application.
>
> Notre projet doit fonctionner indifféremment sous HF7 et MySQL, et nous
> souhaitons donc que le code des requêtes soit, si possible, identique.

> (anonymat pour éviter des accusations de dénigrement)

No comment






Avatar
mat
fabien lavoie wrote:
Est-ce que quelqu'un a une explication?

Est-ce normal ?




Les 67s me parraissent particulièrement lentes, mais les lectures
suivantes sont effectivement normales. Sur un PIV 2.4Mhz en local, sur
20 986 enregistrements je mésure 66 centièmes de secondes pour la
première lecture et entre 37 et 39 pour les suivantes.

La raison de la lenteur de la première lecture est assez simple et a été
mentionné à plusieures reprises sur ce forum: Windev ecrit dans un
fichier et lit en mémoire chaque ligne du résultat, tandis que d'autres
produits ne lisent que les lignes affichées. Les lectures suivantes sont
trouvé dans le cache et donc plus rapides.

La lenteur est plus évident avec le comptage et tri d'enregistrements
car dans les autre cas, la requête est terminé en arrière plan. Une
requête retournant toutes les 20 986 enregistrements termine alors en 5
centièmes de secondes (à partir de la lecture n° 2) au lieu de 1 seconde.

D'ailleurs je pense il existe une meilleure solution pour les requetes
SQLExe avec des fetch partiels.

Point positif de la lenteur initiale, ce sont des lectures très rapides
du résultat. Pour compter (nombre ++) dans une boucle POUR TOUS
FichierSQL sur..., Windev ne prend que 26 centièmes de secondes pour les
20 986 enregistrements (attention, faut attendre la lecture en arrière
plan avant de mésurer le parcours dans la boucle). Si les chiffres sont
disponibles dans le résultat, n'importe quel calcul sur ce fichier est
plus rapide qu'une requête Sum, Avg, etc par instruction SQL séparé.

Des tests extensifs de l'année passée de différents produits (Windev/HF,
Paradox, Visual FoxPro et Delphi), publiés à son temps sur le NG de PC
Soft, ont montré que Windev est le produit le plus lent dans cette
liste. Le comportement en réseau a été amélioré, mais la lenteur
comparative reste à ce jour.
Avatar
...
> La raison de la lenteur de la première lecture est assez simple et a été
mentionné à plusieures reprises sur ce forum: Windev ecrit dans un
fichier et lit en mémoire chaque ligne du résultat, tandis que d'autres
produits ne lisent que les lignes affichées. Les lectures suivantes sont
trouvé dans le cache et donc plus rapides.



Une requête de type "select count(*) from table" renvoie 1 valeur et non un
paquet de lignes !

67 secondes pour renvoyer le nombre total de lignes d'une table, sans aucune
clause WHERE est inacceptable (en effet dans ce cas il est inutile de
parcourir les index). En plus ce résultat est obtenu EN LOCAL (P4 3.2Ghz),
alors que le 0.08s en MySql est obtenu en accédant à une autre machine du
RÉSEAU (P3 500Mhz) qui roule MySQL sous Linux.

Ce qui nous fait peur, c'est que les 427000 enregistrements sont un
échantillon des données que nous devons traiter dans la verison finale (qui
va contenir environ 2000000 d'enregistrements). Nous espérons que les temps
ne seront pas proportionnels :-(

Sommes-nous les seuls à utiliser SQL/HF7 avec des tables conséquentes (mais
pas énormes, nous n'en sommes pas à +10 milliards d'enregistrements comme
sur un autre de nos projets en Oracle) ? En passant, voilà de quoi faire
réflechir pcsoft sur les performances de HF7 (Oracle renvoie un count de +10
milliards en 0.14s) :

------------------------------------------------------------------
select count(*) from mesures

Result 1 field(s), 1 record(s), time 0.14 sec

count(*)
---------------------
10.006.507.317

------------------------------------------------------------------

En recherchant une solution sur les archives je vois que certains
WDprogrammeurs affirment que le SQL/HF7 est plus lent que les ordres
hyperfile classiques (hLit*). Est-ce réel ? Ce serait-il une explication à
nos problèmes de perf ?

Merci

...
Avatar
Roumegou
Moi ce que je ne comprends pas, c'est le pourquoi de sortir votre appli
pour mySQL et HF7 ???

Je veux bien comprendre le besoin de s'ouvrir à plusieurs SGBD standard
comme Oracle, sqlserver, mysql, PostgreSQL car ce peut être un élément
de décision pour le client.

Mais HF ? Je doute que cela soit un argument commercial du fait de la
confidentialité de cette base.
Donc pourquoi ne pas proposer que mysql ?
Ou alors, on choisit HF car on doit avoir des installations monopostes
et pour des petites quantités. Il est peut être alors plus facile
d'installer des fichiers HF et les pb de perfs sont inexistants.
Mais quand on parle de 2000000 d'enreg, la question ne devrait mème pas
se poser, surtout si notre code est dès le depart orienté SQL.

... a exposé le 10/06/2004 :
La raison de la lenteur de la première lecture est assez simple et a été
mentionné à plusieures reprises sur ce forum: Windev ecrit dans un
fichier et lit en mémoire chaque ligne du résultat, tandis que d'autres
produits ne lisent que les lignes affichées. Les lectures suivantes sont
trouvé dans le cache et donc plus rapides.



Une requête de type "select count(*) from table" renvoie 1 valeur et non un
paquet de lignes !

67 secondes pour renvoyer le nombre total de lignes d'une table, sans aucune
clause WHERE est inacceptable (en effet dans ce cas il est inutile de
parcourir les index). En plus ce résultat est obtenu EN LOCAL (P4 3.2Ghz),
alors que le 0.08s en MySql est obtenu en accédant à une autre machine du
RÉSEAU (P3 500Mhz) qui roule MySQL sous Linux.

Ce qui nous fait peur, c'est que les 427000 enregistrements sont un
échantillon des données que nous devons traiter dans la verison finale (qui
va contenir environ 2000000 d'enregistrements). Nous espérons que les temps
ne seront pas proportionnels :-(

Sommes-nous les seuls à utiliser SQL/HF7 avec des tables conséquentes (mais
pas énormes, nous n'en sommes pas à +10 milliards d'enregistrements comme
sur un autre de nos projets en Oracle) ? En passant, voilà de quoi faire
réflechir pcsoft sur les performances de HF7 (Oracle renvoie un count de +10
milliards en 0.14s) :

------------------------------------------------------------------
select count(*) from mesures

Result 1 field(s), 1 record(s), time 0.14 sec

count(*)
---------------------
10.006.507.317

------------------------------------------------------------------

En recherchant une solution sur les archives je vois que certains
WDprogrammeurs affirment que le SQL/HF7 est plus lent que les ordres
hyperfile classiques (hLit*). Est-ce réel ? Ce serait-il une explication à
nos problèmes de perf ?

Merci

...



--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Jean Cougnaud
Bonjour,

Nous nous étions posé cette question il y a quelque temps pour une gestion
de planning et en fait la réponse avait été HF7 pour une histoire de coût.

HF7 est gratuit et, effectivement, plus facile à installer qu'une base SQL.

Du moment où l'on veut cibler une vente à un large public et en boîte dans
les grandes surfaces spécialisées, nous n'avions pas trouvé de base Sql
gratuite, pour une utilisation commerciale, et facile à installer en réseau
par l'utilisateur final.

Notre manque de connaissance y avait peut-être été pour quelque chose, mais
nos questions à ce moment là sur le sujet n'avaient pas eu réellement de
réponse. Pour les clients que nous avions, avant que nous mettions à notre
compte, étaient pour certains produits en HF et d'autres produits plus
conséquents en SQL Serveur. Mais ces clients étaient maintenus par nos
techniciens qui allaient sur site.

Si nous nous sommes trompés, je souhaiterais que quelqu'un nous indique quoi
utiliser et comment l'installer, cela ouvrirait sûrement notre esprit
étriqué.

Merci d'avance

Jean

"Roumegou" a écrit dans le message de
news:
Moi ce que je ne comprends pas, c'est le pourquoi de sortir votre appli
pour mySQL et HF7 ???

Je veux bien comprendre le besoin de s'ouvrir à plusieurs SGBD standard
comme Oracle, sqlserver, mysql, PostgreSQL car ce peut être un élément
de décision pour le client.

Mais HF ? Je doute que cela soit un argument commercial du fait de la
confidentialité de cette base.
Donc pourquoi ne pas proposer que mysql ?
Ou alors, on choisit HF car on doit avoir des installations monopostes
et pour des petites quantités. Il est peut être alors plus facile
d'installer des fichiers HF et les pb de perfs sont inexistants.
Mais quand on parle de 2000000 d'enreg, la question ne devrait mème pas
se poser, surtout si notre code est dès le depart orienté SQL.

... a exposé le 10/06/2004 :
>> La raison de la lenteur de la première lecture est assez simple et a


été
>> mentionné à plusieures reprises sur ce forum: Windev ecrit dans un
>> fichier et lit en mémoire chaque ligne du résultat, tandis que d'autres
>> produits ne lisent que les lignes affichées. Les lectures suivantes


sont
>> trouvé dans le cache et donc plus rapides.
>
> Une requête de type "select count(*) from table" renvoie 1 valeur et non


un
> paquet de lignes !
>
> 67 secondes pour renvoyer le nombre total de lignes d'une table, sans


aucune
> clause WHERE est inacceptable (en effet dans ce cas il est inutile de
> parcourir les index). En plus ce résultat est obtenu EN LOCAL (P4


3.2Ghz),
> alors que le 0.08s en MySql est obtenu en accédant à une autre machine


du
> RÉSEAU (P3 500Mhz) qui roule MySQL sous Linux.
>
> Ce qui nous fait peur, c'est que les 427000 enregistrements sont un
> échantillon des données que nous devons traiter dans la verison finale


(qui
> va contenir environ 2000000 d'enregistrements). Nous espérons que les


temps
> ne seront pas proportionnels :-(
>
> Sommes-nous les seuls à utiliser SQL/HF7 avec des tables conséquentes


(mais
> pas énormes, nous n'en sommes pas à +10 milliards d'enregistrements


comme
> sur un autre de nos projets en Oracle) ? En passant, voilà de quoi faire
> réflechir pcsoft sur les performances de HF7 (Oracle renvoie un count de


+10
> milliards en 0.14s) :
>
> ------------------------------------------------------------------
> select count(*) from mesures
>
> Result 1 field(s), 1 record(s), time 0.14 sec
>
> count(*)
> ---------------------
> 10.006.507.317
>
> ------------------------------------------------------------------
>
> En recherchant une solution sur les archives je vois que certains
> WDprogrammeurs affirment que le SQL/HF7 est plus lent que les ordres
> hyperfile classiques (hLit*). Est-ce réel ? Ce serait-il une explication


à
> nos problèmes de perf ?
>
> Merci
>
> ...

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)



Avatar
mat
Jean Cougnaud wrote:
Bonjour,

Nous nous étions posé cette question il y a quelque temps pour une gestion
de planning et en fait la réponse avait été HF7 pour une histoire de coût.

HF7 est gratuit et, effectivement, plus facile à installer qu'une base SQL.

Du moment où l'on veut cibler une vente à un large public et en boîte dans
les grandes surfaces spécialisées, nous n'avions pas trouvé de base Sql
gratuite, pour une utilisation commerciale, et facile à installer en réseau
par l'utilisateur final.

Notre manque de connaissance y avait peut-être été pour quelque chose, mais
nos questions à ce moment là sur le sujet n'avaient pas eu réellement de
réponse. Pour les clients que nous avions, avant que nous mettions à notre
compte, étaient pour certains produits en HF et d'autres produits plus
conséquents en SQL Serveur. Mais ces clients étaient maintenus par nos
techniciens qui allaient sur site.

Si nous nous sommes trompés, je souhaiterais que quelqu'un nous indique quoi
utiliser et comment l'installer, cela ouvrirait sûrement notre esprit
étriqué.



Pour l'instant, je partage l'opinion d'Eric, c'est à dire HF pour des
volumes relativement petits et autrement un produit plus performant
comme mySQL ou autre.

Il serait sans doute possible d'améliorer le moteur HF pour les requêtes
comme le montrent d'autres produits depuis longtemps, mais cela ne
semble pas être une priorité chez PCS. Avec un bon produit, le file
sharing sur réseau n'a aucun problème avec une dizaine d'utilisateurs et
des fichiers avec quelques milliers ou dizaines de milliers
d'enregistrements. Si l'on veut rester avec le moteur HF gratuit et
simple à installer, eventuellement l'usage des codes Windev SQL.. sont
une solution. Je ne me rappelle pas avoir vu de pleintes à leur propos.
Ou personne ne les utilise, ou ils sont efficaces.

Personellement, je préfère utiliser une base intégrée et des accès selon
leur nature (positionnement/look-up/plage de données), recommandés par
PCS. Ces derniers temps, j'ai travaillé beaucoup avec HExecuteRequêteSQL
et je commence à comprendre mieux le comportement et ce qu'il faut faire
pour améliorer la performance. Mais il restent toujours des choses
inexplicables (75206h), surtout avec des lous-requêtes, p.ex. refus
d'accepter EXISTS.

Autre exemple que je viens de découvrir:

Fichiers Invoice,InvoiceDetail,Address_AddressGroup (fichier de liaison,
un client peut appartenir à plusieures types d'adresse), le code client
se trouve dans le fichier des entêtes factures "Invoice".

La requête principale (extrait):
FROM Invoice INNER JOIN Invoicedetail ON Invoice.IDInvoice =
InvoiceDetail.IDInvoice...
WHERE...

Pour vérifier si le client appartenait à un groupe particulier, je
faisais d'abord le suivant:

"AND Invoice.IDcustomer IN (SELECT Address_AddressGroup.IDAddress FROM
Address_AddressGroup "+...
"WHERE Address_AddressGroup.IDAddressGroup="+cboFltAddressGroup+") "


Or, cela bloque pour ainsi dire le programme ou donne des temps de
réponse de plusieures minutes. La solution a finalement été d'inclure la
liaison des lignes de facture à la facture dans la sous-requête, même si
le code client se trouve dans le fichier facture. La requête modifié
donne des temps de réponse tout à fait corrects aux environs d'une demie
seconde.

"AND InvoiceDetail.IDInvoice IN (SELECT Invoice.IDInvoice FROM Invoice
"+...
"WHERE Invoice.IDCompany IN (SELECT Address_AddressGroup.IDAddress FROM
Address_AddressGroup "+...
"WHERE Address_AddressGroup.IDAddressGroup="+cboFltAddressGroup+")) "


Je suis content avoir trouvé la solution, mais elle me dépasse
complètement. Peut-être des spécialistes du SQL auront une explication à
un tel comportement, peut-être c'est un truc particulier à HF.
Avatar
mat
Jean Cougnaud wrote:

Bonjour,

Nous nous étions posé cette question il y a quelque temps pour une


gestion
de planning et en fait la réponse avait été HF7 pour une histoire de


coût.

HF7 est gratuit et, effectivement, plus facile à installer qu'une


base SQL.

Du moment où l'on veut cibler une vente à un large public et en boîte


dans
les grandes surfaces spécialisées, nous n'avions pas trouvé de base Sql
gratuite, pour une utilisation commerciale, et facile à installer en


réseau
par l'utilisateur final.

Notre manque de connaissance y avait peut-être été pour quelque


chose, mais
nos questions à ce moment là sur le sujet n'avaient pas eu réellement de
réponse. Pour les clients que nous avions, avant que nous mettions à


notre
compte, étaient pour certains produits en HF et d'autres produits plus
conséquents en SQL Serveur. Mais ces clients étaient maintenus par nos
techniciens qui allaient sur site.

Si nous nous sommes trompés, je souhaiterais que quelqu'un nous


indique quoi
utiliser et comment l'installer, cela ouvrirait sûrement notre esprit
étriqué.




Pour l'instant, je partage l'opinion d'Eric, c'est à dire HF pour des
volumes relativement petits et autrement un produit plus performant
comme mySQL ou autre.

Il serait sans doute possible d'améliorer le moteur HF pour les requêtes
comme le montrent d'autres produits depuis longtemps, mais cela ne
semble pas être une priorité chez PCS. Avec un bon produit, le file
sharing sur réseau n'a aucun problème avec une dizaine d'utilisateurs et
des fichiers avec quelques milliers ou dizaines de milliers
d'enregistrements. Si l'on veut rester avec le moteur HF gratuit et
simple à installer, eventuellement l'usage des codes Windev SQL.. sont
une solution. Je ne me rappelle pas avoir vu de pleintes à leur propos.
Ou personne ne les utilise, ou ils sont efficaces.

Personellement, je préfère utiliser une base intégrée et des accès selon
leur nature (positionnement/look-up/plage de données), recommandés par
PCS. Ces derniers temps, j'ai travaillé beaucoup avec HExecuteRequêteSQL
et je commence à comprendre mieux le comportement et ce qu'il faut faire
pour améliorer la performance. Mais il restent toujours des choses
inexplicables (75206h), surtout avec des lous-requêtes, p.ex. refus
d'accepter EXISTS.

Autre exemple que je viens de découvrir:

Fichiers Invoice,InvoiceDetail,Address_AddressGroup (fichier de liaison,
un client peut appartenir à plusieures types d'adresse), le code client
se trouve dans le fichier des entêtes factures "Invoice".

La requête principale (extrait):
FROM Invoice INNER JOIN Invoicedetail ON Invoice.IDInvoice InvoiceDetail.IDInvoice...
WHERE...

Pour vérifier si le client appartenait à un groupe particulier, je
faisais d'abord le suivant:

"AND Invoice.IDcustomer IN (SELECT Address_AddressGroup.IDAddress
FROM Address_AddressGroup "+...
"WHERE Address_AddressGroup.IDAddressGroup="+cboFltAddressGroup+") "


Or, cela bloque pour ainsi dire le programme ou donne des temps de
réponse de plusieures minutes. La solution a finalement été d'inclure la
liaison des lignes de facture à la facture dans la sous-requête, même si
le code client se trouve dans le fichier facture. La requête modifié
donne des temps de réponse tout à fait corrects aux environs d'une demie
seconde.

"AND InvoiceDetail.IDInvoice IN (SELECT Invoice.IDInvoice FROM
Invoice "+...
"WHERE Invoice.IdCustomer IN (SELECT Address_AddressGroup.IDAddress
FROM Address_AddressGroup "+...
"WHERE Address_AddressGroup.IDAddressGroup="+cboFltAddressGroup+")) "


Je suis content avoir trouvé la solution, mais elle me dépasse
complètement. Peut-être des spécialistes du SQL auront une explication à
un tel comportement, peut-être c'est un truc particulier à HF.
Avatar
...
Notre application effectue des acquisitions de données (de qq centaines à
plusieurs milliers par minute).
Certaines versions devant être exploitées sur des ordinateurs portables, sur
des sites externes, il nous semble préférable d'utiliser HF7 dans ce
contexte, au lieu d'être obligés de demander à nos client d'installer sur
serveur MySQL pour un simple application monoposte.

Un autre problème que nous rencontrons avec HF7 est que les performances des
insertions diminuent à mesure que la taille de la BD augmente. Il arrive que
nous devions insérer 3000 ou 4000 enregistrements en une minute, mais HF7 ne
tient pas la cadence. La solution de contournement que nous avons est
d'écrire nos données dans un fichier texte, avec un thread secondaire qui
relit le fichier et effectue les insertions au rythme supporté par HF7. Pas
terrible sur le principe, mais ça fonctionne.

Le peu de réponses reçues à nos questions signifierait que ces performances
sont normales ? Pourquoi est on si lent alors qu'on est très loin des
volumes maximums annoncés par PcSoft dans ses publicités (mensongères?),
soit +300 milliards de records ?


"Roumegou" a écrit dans le message de
news:
Moi ce que je ne comprends pas, c'est le pourquoi de sortir votre appli
pour mySQL et HF7 ???

Je veux bien comprendre le besoin de s'ouvrir à plusieurs SGBD standard
comme Oracle, sqlserver, mysql, PostgreSQL car ce peut être un élément
de décision pour le client.

Mais HF ? Je doute que cela soit un argument commercial du fait de la
confidentialité de cette base.
Donc pourquoi ne pas proposer que mysql ?
Ou alors, on choisit HF car on doit avoir des installations monopostes
et pour des petites quantités. Il est peut être alors plus facile
d'installer des fichiers HF et les pb de perfs sont inexistants.
Mais quand on parle de 2000000 d'enreg, la question ne devrait mème pas
se poser, surtout si notre code est dès le depart orienté SQL.

... a exposé le 10/06/2004 :
>> La raison de la lenteur de la première lecture est assez simple et a


été
>> mentionné à plusieures reprises sur ce forum: Windev ecrit dans un
>> fichier et lit en mémoire chaque ligne du résultat, tandis que d'autres
>> produits ne lisent que les lignes affichées. Les lectures suivantes


sont
>> trouvé dans le cache et donc plus rapides.
>
> Une requête de type "select count(*) from table" renvoie 1 valeur et non


un
> paquet de lignes !
>
> 67 secondes pour renvoyer le nombre total de lignes d'une table, sans


aucune
> clause WHERE est inacceptable (en effet dans ce cas il est inutile de
> parcourir les index). En plus ce résultat est obtenu EN LOCAL (P4


3.2Ghz),
> alors que le 0.08s en MySql est obtenu en accédant à une autre machine


du
> RÉSEAU (P3 500Mhz) qui roule MySQL sous Linux.
>
> Ce qui nous fait peur, c'est que les 427000 enregistrements sont un
> échantillon des données que nous devons traiter dans la verison finale


(qui
> va contenir environ 2000000 d'enregistrements). Nous espérons que les


temps
> ne seront pas proportionnels :-(
>
> Sommes-nous les seuls à utiliser SQL/HF7 avec des tables conséquentes


(mais
> pas énormes, nous n'en sommes pas à +10 milliards d'enregistrements


comme
> sur un autre de nos projets en Oracle) ? En passant, voilà de quoi faire
> réflechir pcsoft sur les performances de HF7 (Oracle renvoie un count de


+10
> milliards en 0.14s) :
>
> ------------------------------------------------------------------
> select count(*) from mesures
>
> Result 1 field(s), 1 record(s), time 0.14 sec
>
> count(*)
> ---------------------
> 10.006.507.317
>
> ------------------------------------------------------------------
>
> En recherchant une solution sur les archives je vois que certains
> WDprogrammeurs affirment que le SQL/HF7 est plus lent que les ordres
> hyperfile classiques (hLit*). Est-ce réel ? Ce serait-il une explication


à
> nos problèmes de perf ?
>
> Merci
>
> ...

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)



Avatar
...
"Manu" a écrit dans le message de
news:ca9nhp$qbl$
> [CUT]

> Le peu de réponses reçues à nos questions signifierait que ces
performances
> sont normales ? Pourquoi est on si lent alors qu'on est très loin des
> volumes maximums annoncés par PcSoft dans ses publicités (mensongères?),
> soit +300 milliards de records ?

Sans être mesquin je vous trouve un petit peu naif avec ce nombre
d'enregistrements. Rien qu'en exploitation de disques cela semble


difficile.
Il y aussi une différence entre ce qu'il est théoriquement possible de


faire
et techniquement réalisable.

--
Emmanuel





Est-on naif parce qu'on estime pouvoir compter sur des performances
acceptable en utilisant un volume 750000 fois inférieur au maximum donné par
l'éditeur du produit (300 milliards / 400000) ?
1 2 3 4